In today’s blog I am going to be talking about ‘Customer Journey’ entity in dynamics 365 for marketing app or to be specific the ‘Customer Journey Designer’ which looks like below:
I call it ‘Mysterious’ because whatever happens in the journey ‘stays’ in the customer journey. i.e there is no way or its difficult to get the segment/contents being used in it. I am talking about Marketing Email, Marketing Page, Marketing Form etc. The question you might want to ask is why would I need that information? well, because of may be below:
- You might have some validations on the content you can use in the customer journey
- You might want to retrieve the data for reporting purpose
If you look into the relationships from customer journey to these entities, you wont find anything hence it gets difficult to retrieve these records or perform operations. In short Dynamics 365 Marketing works a little differently then our typical dynamics 365.
Whatever happens inside a customer journey designer sits in a field on this entity named as “msdyncrm_workflowdefintion“. It stores information about content added in this the journey in JSON format.
This is how it looks:
Let’s understand what this JSON means:
- Each content is stored in a node called “ActivityTypeId“.
- The Id of the content is stored in property “Itemid“.
- To identify the type of content such as Marketing page form etc. refer to below table because it uses different names to each type of content:
Dynamics Entity Name | Internal Name In Customer Journey |
Marketing Page | LandingPage |
Marketing Form | MarketingForm |
Survey | Survey |
Marketing Email | |
Marketing Event | Event |
Marketing Segment | Segment |
If you debug and parse this field data into JSON, looks like something below:
So when you retrieve/query this field, you have to loop through these JSON nodes and do validation using the Guids of these records like in the below example of Javascript:
var workflowDefintion= formContext.getAttribute("msdyncrm_workflowdefinition").getValue();
var workflowDefintionData = JSON.parse(workflowDefintion); //Parse it
var nodeLength = workflowDefintionData.length;
for (var i = 0; i < workflowDefintionData.length; i++) {
var node = workflowDefintionData[i];
/* Check if node is a Marketing page*/
if (node.ActivityTypeId === "LandingPage" && (i + 1) === nodeLength) {
// Perform Operations here
}
Same way you can do in the code if needed.
I hope this help!
Cheers!
I cant find this entity “msdyncrm_workflowdefintion” as part of marketing solution.
LikeLiked by 1 person
@Nadeem – This is a field on customer journey entity.
LikeLike
@Rawish,
Thanks for sharing the detailed steps.
What I found is, that ‘msdyncrm_workflowdefinition’ is not an entity but an attribute of the ‘msdyncrm_customerjourney’ entity.
LikeLike