718 Washington Ave. N. Suite #101
Minneapolis, MN 55401
View map and all Locations

Send us a message

After applying Update Rollup 10, 11, 12 or 13 to Microsoft Dynamics CRM, you may see an issue where workflows that contain a step to send an email get stuck in a status of waiting. This specific issue occurs if the EnableRetrieveMultipleOptimization key exists in the registry and has a value of 2.


(As a side note, if you have workflows that are stuck in waiting and these conditions are NOT true, then we invite you to refer to another one of PowerObjects blogs, How to Fix a CRM Workflow Stuck In Progress.)

But let’s return to the original issue. We saw that system jobs for all workflows that included a step to send emails were stuck with a status of “Waiting,” but all other workflows were succeeding, so we were quickly able to rule out an Async Service issue.

If you have this problem, you can see the error by opening a system job of one of the workflows with a status of waiting, then expanding the details. This is the message:

Crm Exception: Message: Attribute objecttypecode on Entity PrincipalObjectAccessReadSnapshot is of type picklist but has Child Attributes Count 0, ErrorCode: -2147220912

workflows stuck in waiting status - error message

We noticed this error was present on multiple workflows and organizations. However, the error message is not enough to isolate the cause of the error.

At this point, a CRM Platform Trace is a great tool for revealing what is occurring at the platform layer in CRM, while triggering one of the problem workflows to run.

The key to identifying this issue was the exception in the CRM platform trace:

at CrmException..ctor(String message, Exception innerException, Int32 errorCode, Boolean isFlowControlException)  ilOffset = 0x0

at CrmException..ctor(String message, Int32 errorCode)  ilOffset = 0x0

at PagingHelper.GetPagingFieldValue(AttributeMetadata attribute)  ilOffset = 0xA6

at PagingHelper.Serialize(OrderExpressionCollection orderCollection, BusinessEntityCollection entities, EntityExpression entityExpression, ExecutionContext context)  ilOffset = 0xF6

at PagingHelper.CreatePagingCookie(BusinessEntityCollection entities, EntityExpression entityExpression, ExecutionContext context)  ilOffset = 0x36

at Business.QueryAndFillEntityCollection(CrmDbConnection dbConnection, IDbCommand dbCommand, BusinessEntityCollection entities, EntityExpression entityExp, PagingHelper pagingHelper, Boolean useEntityExpression, String aggregateLimitExceededName, ExecutionContext context)  ilOffset = 0x6A

at Business.DoRetrieveMultiple(BusinessEntityCollection entities, EntityExpression entityExp, DatabaseQueryTarget queryTarget, PagingHelper pagingHelper, ExecutionContext context)  ilOffset = 0x41

at Business.DoRetrieveMultiple(BusinessEntityCollection entities, EntityExpression entityExp, DatabaseQueryTarget queryTarget, ExecutionContext context)  ilOffset = 0x40

The “GetPagingFieldValue” would only appear if the EnableRetrieveMultipleOptimization was present with a value of 2. Since the CRM Server was on UR 12, the EnableRetrieveMultipleOptimization was no longer needed. The logic for optimizing the performance for queries which run against large sets of data changed with Update Rollup 10. In other words, the old logic was causing the issue with workflows.

The resolution to this issue is to delete the EnableRetrieveMultipleOptimization registry key and restart all the CRM services. Voila! That’s it.

Hope this helps. If you’re looking for additional technical support from PowerObjects, don’t hesitate to contact us.

Happy CRM’ing!


Avatar for Joe D365

Joe D365

Joe D365 is a Microsoft Dynamics 365 superhero who runs on pure Dynamics adrenaline. As the face of PowerObjects, Joe D365’s mission is to reveal innovative ways to use Dynamics 365 and bring the application to more businesses and organizations around the world.