Introduction:
Since Business Process Flows were introduced back in the days of CRM 2013, it only supported having one BPF associated with a record. The idea of Business Process Flow has been to enable and guide the users and teams on the directions or processes to follow when working. And it is not uncommon to have multiple teams working on the same record but having distinct responsibilities and therefore there was always a need to allow for multiple business process flows to be associated with a record with each user following through the process that works for their individual responsibilities.
How are multiple processes supported per record?
Traditionally since it only had to support and maintain the details of the single process and stage that was associated with the record, it was being handled by storing this information in additional fields on the entity itself.
When an entity was enabled for Business Process Flow, it would automatically add the following fields to the entity
- stageid (Shows the ID of the stage)
- processed (Shows the ID of the process)
- transversepath (For internal use only).
As you progressed through the stages in the business process flow, these fields would be updated. You could then use the information stored here for analysis on the stages at which most records have been waiting.
To add support for multiple process flows to be associated with a record, business process flows now have an entity of their own. This means for every business process flow created there is now an entity created in the background that holds the following information
Where Testing was the name of the Business Process Flow that was created.
It will also create lookup for the entities associated/involved with the BPF. Here you see the lookup for Lead and Opportunity created.
There will one record created per BPF that you have executed on the record and as you progress along in each of the business process flows the stages would be updated here.
An additional feature included here is the tracking of the time since entering the stage. This helps with the analysis and understanding of how long the process has been in waiting since it first moved to this stage. This will help identify roadblocks in the process and take appropriate actions to expedite the processes.
Currently, it only stores the time for the active stage and it would help if it would record the time spent in each of the stages to assist and help improve analysis.
API actions allowed?
Since these are now standard CRM entities, they are accessible through the SDK and API for updates.
To access the records for a specific BPF you can use the following URL
https://[Organization URI]/api/data/v8.2/new_testings
The result would be
Here, suppose if wanted to query the BPF against specific record then we can use below query.
In this below query, we have taken an example that one lead record is associated with BPF.
Query:
https://[Organization URI]/api/data/v8.2/new_testings?$filter=_bpf_leadid_value%20eq(10a0a775-413d-e711-80ef-c4346bacfbbc
Result:
Conclusion:
Dynamics 365 Customer Engagement/ CRM now supports tracking of multiple simultaneous processes with data stored in reportable formats and accessible through the SDK API.