CRM 2013 New Features: Business Process Flows

With CRM 2013 Microsoft have introduced the biggest user experience change yet, the process-centric UI:


For those of us that design solutions on Microsoft CRM this is where I think we need to spend the most thinking time as we study up on CRM 2013. 

In this post I’m going to walk you through the creation of a custom Business Process Flow and help explain how cross-entity flows work. 


Here’s my scenario, I need CRM to support the sales and delivery process for an IT Company that implements software.   The company’s primary business processes are in Sales and Delivery.   Traditionally they have tracked Opportunities and Projects in their CRM system and these have been quite disconnected experiences.   Their goal with CRM 2013 is to have a more integrated and consistent user experience where the system supports the process from opportunity qualification through to delivery of the project.   This integrated process looks a bit like this:


So, my plan then is to utilize CRM’s “Opportunity” entity and a custom “Project” entity.  I will surface a process centric UI across these 2 entities using the Business Process Flow feature in Microsoft CRM 2013.

Let’s jump straight to the interesting bit and have a look at the Business Process Flow configuration.   We access this from the Processes area in CRM (where we have historically configured Workflows and Dialogs).  The first thing I need to do is disable the existing Business Process Flows that exist for the Opportunity entity.   There are 2 that come OOTB, I need to do an “Add Existing” to pull these into my Solution and then deactivate them, otherwise they get in my way:


Now I can create my new Business Process Flow:


I define the Stages that relate to the Opportunity record and list the fields I want grouped under each Stage:


Next I add the Project entity and the Stages that relate to that entity.   I click the +/- icon and select the Project entity.   Here the UI offers the 1:M related entities for Opportunity that have been enabled for Business Process Flows (there is a new setting on the entity record for this): 


Now I define the Stages and select the fields I want for each Stage:


And this is how this all looks once I Activate the Rule and try it out on a new record:


Now what’s important to understand is at no point there did I configure the automatic generation of a Project record.  If you are looking for that functionality within the Business Process Flow editor I’m afraid I need to reveal it doesn’t exist, the Business Process Flow will not create a Project for you.   You have 2 options, either you utilize something like Workflow / JavaScript / Plug-ins to generate the Project once a certain event occurs, or, you leave it to the user to create the record as they transition Stages.   Let me show you what that second option looks like to the user…

Back on the Opportunity form the user will populate the fields for each Stage and then click the Next Stage button to move forward in the process:


The flag icon moves to the next Stage and the fields for that Stage become visible:


When the user gets to the Stage transition that spans the Opportunity and Project entities the user experience changes, the user is prompted to select a Project record.   CRM needs to know which Project record to continue on with.   If we haven’t programmatically created the Project record for the user there will be no child Project records to pick from and the user will need to create one on the fly.  Fortunately, this just takes a click:


And the UI is refreshed and the Project form displayed.  The process chevron remains providing consistency to the users.  Any new data captured from this point on writes to the Project record:


If you prefer to create the Project record for the user you can do this easily with a Real Time Workflow.   Below I have configured a workflow to trigger once the “Contract Signed?” field is set to “yes” (it needs a Save to fire though so keep that in consideration when using real time workflows, they’re still not as immediate as JavaScript:


With this enabled, clicking Next Stage to move from Close to Discovery will offer up the automatically created Project record to the user to select:


So the user experience doesn’t really dictate the need to automatically create the Project record, you just need to consider how you will default any values on the record if you don’t create it programmatically.   The relationship field mappings will help you out a little there.

Another area of consideration is whether you need to close out the Opportunity record.  Again the Business Process Flow definition won’t really help you but Workflow, JavaScript and Plug-ins will.

I find the out-of-the-box experience of the Lead to Opportunity process a little disjointed in this area.  In order to progress the process you need to use the Command bar and Qualify the Lead.  I don’t like that.   In my solutions I will endeavor to keep the user in the Process chevron so they all they need to do is complete fields and click Next Stage.


One last thing, in the Business Process Flow designer you can ‘close out’ the process cycle:


But all this does is allow you to define additional stages in your process where an earlier entity resume focus again (in my case this would be the Opportunity entity).  If you do this, you cannot go any further with the process – i.e. you cannot add any additional entities, it is intended for the last steps in the process.   Returning to and updating the Opportunity doesn’t make sense in my scenario but imagine you want a process flow that starts with Case, jumps into Appointment and then returns to Case.   That might make sense in a scenario where Cases are captured for on site service requests, a technician goes out and then the Case is closed out.

That’s it on this topic.  Hopefully this helps with your understanding of Business Process Flows.  If you have any insight add please share via the Comments below.  🙂

7 thoughts on “CRM 2013 New Features: Business Process Flows

  1. Henrik Kappel

    Dear Tucker

    Thanks for this insightful post. I have so far 2 customers updated from 2011 to 2013 (Online). During this process I have noticed the following changes which does not 100% satisfy my customers, since it needs extra work done:

    On Opportunity (in Polaris) a stage change did update a field on the opportunity form (salesstage) which meant it could trigger a workflow to change i.e. the probability depending on the actual stage. Also (as far as I remember) Polaris updated out-of-the box Sales Pipeline reports, which of cours is expected (but not the case in original 2011 release).

    As I see the change, the sales process has been changed to a related entity with witch you can’t trigger any workflows. This means my old sales process workflows/solutions are not supported in the upgrade.

    Do you have any elaborations on how to make this possible in 2013?

      1. suette

        Hey Thanks for the reply…but i wanted to ask in your screen shots there are some lock symbols on process flow stages for e.g. in your 2nd last screen shot there is lock symbol beside discovery stage…so i wanted to know that how those symbol appeared…i also wanted to do the same so please tell me bcoz i have already made the fields required but that lock symbol doesn’t appears .

  2. Geema

    Great post. Can you please explain how to default values when we are not programmatically doing it? I want to make sure particular record is displayed when user clicks on Next Stage.

    Thanks for your help!

  3. Ronald Jones

    When would a “Close as Won” occur on the opportunity in the above scenario? Would that be put as the “Close Process Cycle” step?


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s