Business Process Flows (BPFs) in Dynamics 365 CE / Power Platform – Deep Dive Part 2

  • avatar
    Admin Content
  • Jun 20, 2025

  • 6

The Rabbit Hole

In my last newsletter - I started to write about Business Process Flow in Dynamics 365CE / Power Platform. Where I left off on the last post was with me scratching my head about if I even understood how all this alls works?

The last two week, I have been down a very deep rabbit hole and I haven't found my way out just yet. This deep dive 2 is just me taking a deep breathe while I explore further.

The last Deep Dive we ended here -- a visual editor for BPFs.

What is in this visual editor?

Article content
BPF Visual Designer

To better understand the visual designer than it is best to understand the data model for BPFs because the visual designer is combining multiple tables(and relationships) into it.

When we look at the Unified Process Designer above it contains the following tables from the data model.

 

  1. A Primary related Table = KYC Simple starts on a Contact
  2. The KYC Simple BPF is a Table Itself
  3. A BPF Stages belong to another table called Process Stages
  4. Workflows(Processes) are the table for all System Workflows where all BPFs are of Category = 4

 

Article content
Full Diagram here:

When we look athe Unified Process Designer URL it is pointing at: id:13b7c019-ef45-f011-8779-7c1e5236ac0a which is the process ID used for the BPF WorkFlow(WorkflowID) and in the Process Stage(ProcessID_Value)

Article content
Process ID

Workflows(Processes)

I think that most people that have worked with Dynamics 365 CE / Powerapps know about workflows(processes) and how this all works.

To make my life easier

I build a little model-driven app called "Process App" and I added all the tables and related items I needed to find things easily.

Back to Workflows( Processes) - It should be noted that the table schema/logical name is "Workflow" and the display name is "Processes"

Article content
Table Reference:

This view I just filtered out the processes on category = "Business Process Flow" in the standard UI view buidler.

Using the API It is possible to see your processes via the web where workflow.category = 4 means BPF.

Other values include: 0 = Definition | 1 = Activation | 2 = Action | 3 = Business Rule | 4 = Business Process Flow

All Workflows(process)

[environment]/api/data/v9.2/workflows

Or just the active BPFs

[environment]/api/data/v9.1/EntityDefinitions?$select=SchemaName,LogicalName,DisplayName&$filter=IsBPFEntity%20eq%20true

Or a single BPF

[environment]/api/data/v9.1/[BPF Schema Name]

Now to BPF Process Stages

For each Process Stage added to the BPF in the visual editor:

Article content
Process Stages

A New Process Stage is created in the Process Stage Table. To find the process stages just use the api because this is hidden and can't bee added to the UI of any modeldriven app.

Article content

API

Using the API makes it easy find the Process Stages and their Stage Ids

[your env]/api/data/v9.1/processstages

Process Stages ID

Can be found in through the API and searching for the name of the Process. I used "KYC" and it returend the process stages to me :

"@odata.etag": "W/\"9236990\"",
      "operationkind": null,
      "parametervalue": null,
      "_processid_value": "13b7c019-ef45-f011-8779-7c1e5236ac0a",
      "operationtype": null,
      "clientdata": "[{\"DisplayName\":\"Email\",\"DisplayLabelId\":\"47feffa6-475f-412b-86ed-3f2361f2c47e\",\"Type\":\"Field\",\"Field\":{\"AttributeName\":\"emailaddress1\",\"IsRequired\":true}},{\"DisplayName\":\"First Name\",\"DisplayLabelId\":\"2fd4dff4-f6da-4bcc-80bd-eb69ca7210d5\",\"Type\":\"Field\",\"Field\":{\"AttributeName\":\"donotbulkpostalmail\",\"IsRequired\":true}},{\"DisplayName\":\"Birthday\",\"DisplayLabelId\":\"72e0d289-d13b-4fe3-9c9e-5beeb220e8ec\",\"Type\":\"Field\",\"Field\":{\"AttributeName\":\"birthdate\",\"IsRequired\":true}}]",
      "owningbusinessunit": "c0e7ee9b-5822-f011-8c4e-7c1e5276d9d7",
      "stagename": "KYC STAGE 1",
      "_parentprocessstageid_value": null,
      "versionnumber": 9236990,
      "istrigger": false,
      "stagecategory": -1,
      "operationid": null,
      "parametername": null,
      "primaryentitytypecode": "contact",
      "processstageid": "e716e4e9-c2eb-475d-a379-31c63efedc80",
      "_ownerid_value": "d0eeee9b-5822-f011-8c4e-7c1e5276d9d7",
      "connector": null
    }

The other way to get them is to add the BPF to your app and you can create a view of the BPF. See how I added the BPF called KYC SIMPLE to the UI.

Article content
Process APP

The table KYC Simple can open but it is not possible to add any fields to a form or create a new form as the entity is locked down. This all one gets...

Article content
BPF_No Form

Process Stages ID in the KYC Simple View

The process stage IDs are found in the view and they are called Transversed Path. The Transversed path shows which Stages the BPF is on or has been on by listing the ID(s) and separated by a comma.

Article content
Transversed Path

What Did I learn So Far? Is there a User Case in there somewhere?

YES!!

My user case is that I want to run simulataneosly difference Business Process Flows(BPF) on a customer. None of the BPFs have to be visual on the contact card beause I want to use the BPF to track where they are in my various important onboarding processes.

I want to be able to track where the contact is in these processes and it should be visible to the people that need to see them.

3 Business Processes

I have created - 3 BPFs - with 3 stages eacg

 

  1. Know Your Customer(KYC is shown on contact)
  2. Onboardning Journey
  3. Customer Journey

 

BPF Stage History Log

I have created a BPF Stage History Log to track the creation, stage changes and process finish for the BPF.

Article content

I configured the status reasons for logging BPF, Start, Active, In the Past and Finished

Article content

Added Some Simple Graphs

Article content
Graphs on Status and BPF Type

Duration

One sticking point is time tracking and in the current data model time on stages is overwritten and with the BPF Historical Table - I can track the duration of the BPF between stages, which gets lost in the current data model and complete time

Article content

Contacts

On the view for Contact - I added the editable grid component and show the BPF historical stages for each contact and I have added to the Contact itself in a new tab as a subgrid.

Contact View

Article content

On the Contact Itself

Article content
Contact BPF Histories

Deep Dive Part 2 Conclusions

Well, there is a bit more to do with BPFs because I want to drive value from a better understanding of how everything is tied together. This is important to help find any missing pieces needed to drive end user business value as well as possibly re-imagine old processes into digital ones.

In my next post I will show the follwing:

 

  • BPF Historical Table in Detail
  • Power Automate Flows to drive this
  • Reporting
  • Possible Canvas App to visualize all this

Source: Business Process Flows (BPFs) in Dynamics 365 CE / Power Platform – Deep Dive

Get New Internship Notification!

Subscribe & get all related jobs notification.