Recently we ran into issue with Project Template for one of our customers in Project Online environment. We were getting error while saving the updated template on existing Project Template.

Note: Issue does not occur if you try to save template by new name.

Below are the steps to reproduce the issue and error information.

  1. Create new Project Template
  2. File >> Save As >> Select Type as Template >> Enter same as the existing template.
  3. Click on the Save.
  4. The Save operation will fail with below error in the queue.

Error:

=============================

<?xml version=”1.0″ encoding=”utf-16″?>

<errinfo>

<general>

<class name=”DatabaseUndefinedError”>

<error id=”50000″ name=”DatabaseUndefinedError” uid=”02164c42-1b40-e511-80d2-00155d64ef0c”/>

</class>

<class name=”ActiveCacheQueuedMessageExecutionError”>

<error id=”12005″ name=”ActiveCacheQueuedMessageExecutionError” uid=”04164c42-1b40-e511-80d2-00155d64ef0c” error=”System.Data.SqlClient.SqlException (0x80131904): Procedure or function MSP_DELETE_PROJECT_RESOURCES_INTERNAL has too many arguments specified.&#xA;   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)&#xA;   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)&#xA;   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean&amp; dataReady)&#xA;   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)&#xA;   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task&amp; task, Boolean asyncWrite, SqlDataReader ds)&#xA;   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task&amp; task, Boolean asyncWrite)&#xA;   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)&#xA;   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()&#xA;   at Microsoft.Office.Project.Server.Data.SqlSession.ExecuteNonQuery(SqlCommand command, SqlInfoMessageEventHandler handler)&#xA;   at Microsoft.Office.Project.Server.Data.SqlSession.ExecuteNonQuery(SqlCommand command)&#xA;   at Microsoft.Office.Project.Server.DataAccessLayer.SqlSessionManager.SqlSessionAdapter.&lt;&gt;c__DisplayClass1.&lt;ExecuteStoredProcedureNonQuery&gt;b__0()&#xA;   at Microsoft.Office.Project.Server.DataAccessLayer.SqlSessionManager.SqlSessionAdapter.RetryableExecuteHandlerWithSession(Action retryableAction, Boolean allowRetry)&#xA;   at Microsoft.Office.Project.Server.DataAccessLayer.SqlSessionManager.SqlSessionAdapter.LogSpecificSqlExceptions(Action action)&#xA;   at Microsoft.Office.Project.Server.DataAccessLayer.SqlSessionManager.SqlSessionAdapter.ExecuteStoredProcedureNonQuery(String schemaQualifiedStoredProcedureName, SqlParameter

[] parameters)&#xA;   at Microsoft.Office.Project.Server.DataAccessLayer.DAL.SubDal.&lt;&gt;c__DisplayClass29.&lt;ExecuteStoredProcedureNoResult&gt;b__25(IProjectServerSqlSession session)&#xA;   at Microsoft.Office.Project.Server.DataAccessLayer.DAL.RunInActiveSession(Action`1 actionHandler)&#xA;   at Microsoft.Office.Project.Server.DataAccessLayer.DAL.SubDal.ExecuteStoredProcedureNoResult(String storedProcedureName, SqlParameter[] parameters)&#xA;   at Microsoft.Office.Project.Server.DataAccessLayer.Generated.WinProjDalBase.DeleteOldProjectResources(Guid projUid, DateTime deletedDate, Int32 deletedRevCounter)&#xA;   at Microsoft.Office.Project.Server.BusinessLayer.WinProjUtility.WinProjSynchronousSaveProcessor.DeleteOldProjectResources(Guid projGuid, String projName, DataStoreEnum store, Guid userGuid, Guid sessionGuid, String sessionDescription, Guid jobGuid, ProjectType projType, DateTime modDate, Int32 revRank, Int32 modRevCounter, Boolean isOverwriteSave, Boolean isNewProject, Guid projectOwnerGuid)&#xA;   at Microsoft.Office.Project.Server.BusinessLayer.WinProj.PostSaveProjectData(SerializableProjectPostSaveData serializableProjectPostSaveData, WinProjTraceContext wpTraceContext)&#xA;   at Microsoft.Office.Project.Server.BusinessLayer.QueueMsg.SaveProjectFinalChunkMessage.Dispatch(WinProjTraceContext traceContext)&#xA;   at Microsoft.Office.Project.Server.BusinessLayer.Queue.ProcessACMessage.DispatchSaveProjectChunkMessage(Message msg, MessageContext mContext)&#xA;   at Microsoft.Office.Project.Server.BusinessLayer.Queue.ProcessACMessage.HandleMessage(Message msg, Group messageGroup, JobTicket jobTicket, MessageContext mContext)&#xA;ClientConnectionId:26b47882-177b-4294-81be-1e6151097ba0&#xA;Error Number:8144,State:2,Class:16″/>

</class>

<class name=”Queue”>

<error id=”26000″ name=”GeneralQueueJobFailed” uid=”05164c42-1b40-e511-80d2-00155d64ef0c” JobUID=”a20b2d35-1b40-e511-825f-ace010ad4c5d” ComputerName=”f54a57b7-e03a-4e0c-bc53-99d25acdfd48″ GroupType=”ACProjectSave” MessageType=”Byte[]” MessageId=”1″ Stage=”” CorrelationUID=”c0ea229d-c040-2000-2113-2e1b622d9907″/>

</class>

</general>

</errinfo>

===========================

Microsoft confirmed this as an issue and fixed it by running update on our Project Online Tenant.

Let us know if you need any assistance