I hope that someone will help with the following question, because I did not find info elsewhere.


We have a module (custom development based on .NET stack) which is working as a facade for MS Dynamics 365. This module has Web API to handle some business cases.

Simplified scenario:

We would like to use correlation mechanism in MS Dynamics 365 to trace activity as well as track down full request flow in case of error.

Because CRM OrganizationService is based on WCF I enabled activity trace and it seems working: all the SOAP requests/responses are chained by the same activity id.


Despite the fact that single activity id is used to chain communication with MS Dynamics 365, but in case of error on the CRM side (i.e. plugin) CRM trace log contains different activity id. Also this id is not consistent, every error entry will have different activity id. 

Trace log sample:

[2019-04-15 06:29:50.161] Process: w3wp |Organization:00000000-0000-0000-0000-000000000000 |Thread: 24 |Category: Exception |User: 00000000-0000-0000-0000-000000000000 |Level: Error |ReqId: d1f15ac2-e656-4261-b7f5-6e7d85b8b1dc |ActivityId: 0bdf629c-f154-4ef7-bc99-330b6a6fc84b | EntityMetadataNotFoundException..ctor ilOffset = 0x1B
at EntityMetadataNotFoundException..ctor(String entityName, NameMappingType mapping) ilOffset = 0x1B
at DynamicMetadataCache.GetEntity(String entityName, NameMappingType mapping) ilOffset = 0x13
at SdkRequestDescription.GetObjectTypeCodeFromFieldWithMask(Object fieldValue, FieldMasks fieldMask, IOrganizationContext context) ilOffset = 0xEB


Maybe someone knows if MS Dynamics 365 supports correlation ids when client is an external system (I know that internal plugin during execution has correlation Id as a execution context property)? Or perhaps I have wrong view regarding MS Dynamics 365 traceability?