Tag: process

  • Enforcing Business Process Flow Fields with Real-time Workflows

    Enforcing Business Process Flow Fields with Real-time Workflows

    Earlier I demonstrated the new capabilities that Microsoft Dynamics CRM 2013 has introduced for workflow processes: showing error messages with real-time workflows. I covered examples of record assignment, merging duplicate accounts and stopping unwanted updates in the Mobile Express client. This time I’ll take a look at how the error message feature can be leveraged in managing the sales process on opportunity records.

    The new Business Process Flows in CRM 2013 provide the possibility of setting fields in a stage as required. This is a nice advancement over the previous platform functionality that only allowed you to set fields as business required per entity, since now we can dynamically control the stage at which we will require the user to input the information onto a form. It’s very typical that a user wouldn’t yet have much details available about a sales opportunity when first entering the information into the CRM system, so it makes total sense to not ask too many questions initially. After all, you can make a field required, but if the user simply doesn’t possess the information asked in it, he or she may just enter dummy data into the field to meet the technical minimum requirements.

    CRM_2013_business_process_flow_editor

    Looking at the default opportunity sales process that comes with Dynamics CRM, we have a number of bit fields in the Close stage that indicate tasks the opportunity owner should complete before closing the opportunity. In the Business Process Flow editor we can tick a box and set these fields to be required. What does a required field in the Business Process Flow then mean exactly? It simply means that you can’t move the record forward from that stage until a value is entered in the field. In the case of bit fields (two options) the value should be set to Yes (ID 1) to meet the criteria.

    OK, sounds logical, but what about if we’re already in the last stage of the process? How is the requirement level enforced if there are no more stages to move to? The answer is: it’s not. Since the actual closure of an opportunity as Won or Lost is not a stage in the process but rather a change of the record status, Business Process Flow has nothing to do with it. We can observe this behavior by setting a field required in a process stage and then navigating to a test opportunity and attempting to close it as Won. In our example, the File Debrief field has been set as required in the Opportunity Sales Process, but the system still allows the user to close the opportunity without entering data into this field.

    CRM_2013_business_process_flow_opportunity_close

    “That sounds like an unfortunate gap in the business logic, I guess we’ll need to get a developer to write a plug-in for us to stop the status change operation if required data is missing.” Hold it right there, mister! We’re dealing with Dynamics CRM 2013 here, which means we can build the equivalent feature with a real-time workflow process! No custom code needed for such a simple task, as long as you know how to leverage the new interactive nature of synchronous workflows.

    Let’s create a new workflow on the opportunity record and set it to start when the record status changes. We’ll configure it to be run as “after” the event, since we’re interested in capturing the new status value of the record. In the workflow criteria we’ll define that we want our business logic to apply if the opportunity is being set as Won but the File Debrief field has not bee set to Completed. Since this is a real-time workflow, we can add a step where we set the process to be stopped as Cancelled and then define an error message in that step’s properties. This will then be presented to the end user who is triggering the status change event if the workflow criteria is met.

    CRM_2013_workflow_opportunity_close

    Now, let’s go to our test opportunity, re-open it and attempt to close it without marking the File Debrief field as Completed. When clicking the Close as Won button on the opportunity form command bar we’re presented with the standard, non-customizable Close Opportunity dialog window asking us about the Actual Revenue, Close Date and so on. Since we’re so excited about having won the opportunity we’ve completely forgotten that there were still tasks we needed to complete before we’re allowed to close it off from the sales pipeline.

    CRM_2013_business_process_flow_opportunity_close_2

    Once we click OK, a new dialog window is presented: the Business Process Error prompt, along with the error message that we defined in the Stop stage of our workflow process. The opportunity close event is rolled back and we can return to the opportunity form to see what steps of the process we had neglected.

    CRM_2013_business_process_flow_opportunity_close_3

    As I mentioned in my previous article about the new business process automation capabilities of CRM 2013, Business Process Flows are essentially a process map that is meant to guide the user through the stages. It cannot actually perform any automated tasks by itself, nor enforce any rules apart from the changing of the stage through the visual business process control at the top of the form. To implement this type of functionality you should look into Business Rules and Real-Time Workflows instead.

  • Using Real-Time Workflows to Show Error Messages

    Using Real-Time Workflows to Show Error Messages

    In CRM 2013 we now have the option of setting a workflow to be run synchronously, also known as a real-time workflow. This opens up great new possibilities to leverage workflows in designing automated processes and providing immediate feedback to the end user when CRM data is created or updated. Having the workflow process executed in real-time also provides one additional capability that traditional, asynchronous workflows can’t handle: stopping the transaction from taking place.

    Configuring Custom Error Messages

    Similar to synchronous plug-ins, real-time workflows can present a Business Process Error dialog to the user when the operation being performed is breaking the rules of the configured business logic. As the real-time workflows execute in the current transaction, they have the power to roll back the changes that the user is trying to perform, whereas an asynchronous workflow could only observe what had already taken place.

    How does this work in practice? Let’s explore the feature by setting up a very simple workflow rule to verify the owner of a record, in this case the Project Manager (owner) of a custom Project entity. When creating the workflow we’ve unchecked the “run this workflow in the background (recommended)” checkbox and thus defined it to run in real time. (If you forgot to do this, just reach for the “Convert to a real-time workflow” button on the toolbar, as the form checkbox can’t be edited directly). We’ll attach the workflow to the assign event of the entity.

    Real-Time_Workflow_rule

    In the workflow rule criteria we’ll perform a check that the Project Manager has the necessary qualifications for the job. If not, we will  stop the workflow and set its status to be Canceled. What’s new compared to CRM 2011 workflows is that we can set a Status Message for the workflow cancellation. Rather than just being a behind the scenes log entry, this text field’s contents will actually be presented to the user if the real-time workflow process is cancelled. This is therefore the place where you should provide instructions on why the cancellation took place and how the user can avoid it.

    Let’s activate our workflow, go to an existing project record and attempt to assign it to a less competent CRM project manager, like Teppo:

    Real-Time_Workflow_error_1

    After we click OK on the assign dialog, a Business Process Error dialog is presented, along with our status message text that explains why the operation cannot be allowed.

    Real-Time_Workflow_error_2

    The transaction is rolled back, which means the assignment never takes place and our project remains in the hands of a certified professional. CRM workflows save the day!

    Here’s a couple of considerations to keep in mind with the above example:

    • If I had set the workflow to run Before the assign event, I wouldn’t have received an error. That’s because we would have had a pre-image of the record to work with, in which the change of ownership would not yet have taken place. Having these options available in the workflow editor UI gives more flexibility for defining the business logic, but you should know at least a bit about the underlying Dynamics CRM event execution pipeline to make the most of them.
    • If I had simply clicked on the Project Manager (owner) lookup and changed the value, I wouldn’t have received an error in either case. That’s because from the platform’s perspective the assign event is different from the event of updating the owner lookup field. Also note that creating a new record for another user is not an assign event either, so you’ll want to expand the criteria of when the workflow rule is triggered to catch these.

    Stopping Unwanted Data Updates

    What kind of real life scenarios would then require the system to throw a Business Process Error at the user? Let’s think about a typical CRM implementation where the customer data is integrated with an ERP system. As long as you’re working with prospects that haven’t placed an order yet, there shouldn’t be too many limitations in place in CRM on how you can update the data. Once the account information is transferred to the ERP system for the purpose of order and invoice processing, the need for restricting certain operations on the account records will likely arise.

    Let’s assume that we’re identifying the ERP integrated accounts through the Account Number field on the CRM account entity. If the field contains data, then this is a record where updates need to be restricted. By leveraging the new CRM 2013 Business Rules we can configure the fields on the form to be disabled if an account number exist. But what about updates that are not performed as changes of form field values? This is an area the Business Rules can’t touch, but with real-time workflows we may be able to add custom business logic into CRM that would have traditionally required a .NET developer to write plug-ins for us.

    As an example, we’d like to ensure that no account records can be deactivated in CRM if they exist in the ERP system. The deactivation might take place through a data management operation like merging duplicate records, in which the master record is left in active status and the child record gets deactivated. We can’t directly trigger the workflow process from the clicking of the Merge button on the account view Command Bar, but we can set our business logic to be run on the status change event. Let us therefore build a new “Stop account merge” real-time workflow rule with the following criteria:

    CRM_2013_workflow_stop_account_merge

    We’re actually performing this after the deactivation has already taken place, but that doesn’t matter, because we’ll still be able to cancel the whole operation. We’ll look for any accounts that have gone through a status change event and are now in an Inactive state. If the account record has an account number, we’ll stop the workflow with status of Canceled and provide a message to the user explaining what are the proper steps to take in getting everything updated correctly both in the CRM and ERP systems.

    Let’s try this first on a single account record. When we click on the Deactivate button on the account form’s Command Bar, the Business Process Error dialog is presented to us, along with the message we defined in the workflow. No deactivation can take place, so the account is returned back to active status. More precisely, the account record status never changes, as can be verified from the audit history log (if enabled).

    CRM_2013_account_deactivate

    Great, now let’s move on to the Merge scenario and try to combine two active accounts with account numbers into a single account. We’ll select the accounts, click Merge, go through the Merge Records dialog, defy all the instructions given to us by the CRM key user of our organization and attempt to merge two separate ERP accounts in CRM. Once we hit the OK button for the merge to be performed, the Business Process Error dialog jumps to the rescue and stops the operation.

    CRM_2013_account_merge

    Hey, wait a second, why’s the text in the Business Process Error window different now? “ISV code aborted the operation”, what does that mean? Well, it seems that because we’re not actually performing the status change action directly on the record but rather leverage the built-in Merge Records dialog and its associated business logic for record deactivation, our status message text doesn’t  reach that screen. The event itself does “bubble up”, though, so stopping the status change also rolls back the entire transaction and none of the fields on the records being the targets of the merge operation change. That’s the important part, after all.

    Complementing Business Rules

    Let’s have a look at one more use case for the real-time workflow error messages before I let you get on with your browsing. The previous example covered an event that Business Rules weren’t able to control, due to the fact that they execute only on the entity form. In a CRM & ERP integration scenario you may however need to have the account record fields locked on more places than just the form. Remember that any updates the user would perform through other means, such as Excel export/re-import or a custom client app would not trigger the Business Rules that are essentially just client side scripts on the form. If you build this logic onto the server side as plug-ins or workflows, though, no one can perform an operation that would violate the rules (just ensure there’s always some supported way for performing the necessary updates & don’t block you integrations while creating these gatekeeper workflows).

    One built-in form where the Business Rules don’t run is the mobile form. Utilized in both the Mobile Express browser version as well as the mobile apps for Windows Phone, iPhone and Android, these forms offer a limited set of capabilities for reading, creating and updating records. While you can set a field on the mobile forms to be read-only, you can’t build any conditional logic to determine when the field should be locked.

    CRM_2013_account_name_edit

    CRM_2013_Mobile_Express_acount_editLet’s assume you want to allow people to quickly create and edit accounts through their mobile device, but you also want to lock down the account names on records that have been synchronized to the ERP system. To meet the first requirement you’ll need to leave the field on the form in an editable mode. To stop someone from accidentally overwriting the name of your biggest customer account with “Aasd,abhoignldfiiiiii” or other gibberish when fumbling around with CRM on their tiny little iPhone screens, you could create a real-time workflow to guard these fields from unwanted input. Have it run on the field change events, check whether it’s an ERP account with an account number and then cancel the event if necessary.

    Opening up the Mobile Express UI (just append the CRM organization URL with /m/ to access this version) and trying to edit the account name field now gives the same kind of notification as the full browser client. The Business Process Error dialog window doesn’t seem to have any mobile optimized version, but again it gets the basic job done by stopping the update. I didn’t test this on the Dynamics CRM mobile apps, but seeing how at least on Android the app is almost identical to the Mobile Express browser version I’d imagine the experience is similar there as well.

    OK, that’s the end of my experiments with real-time workflow process error messages for now. I’m sure that there will continue to be a need for more advanced solutions for controlling user data input that will involve hiding UI components through scripts or enforcing business logic through plug-ins, especially if the transaction volumes are expected to be high. The new workflow capabilities do however provide a quick way to configure custom error prompts and stop unwanted events when experimenting with the design options of your solutions and iterating your way towards the final production system.

  • Getting Your Head Around Dynamics CRM 2013 Processes – Part 2

    In the first part of this series we looked at the two new process categories introduced in Dynamics CRM 2013: Business Process Flows and Actions. Now it’s time to dig deeper into new CRM 2013 functionality that will allow you to achieve process automation results in areas where custom code was previously required.

    Business Rules: Processes In Disguise

    You may have already heard about the new feature in CRM 2013 that promises to free us from writing Javascript to manipulate form fields, called Business Rules. If you’re looking to find them from under the Process Center, though, you’re in the wrong place. Business Rules are a property of the entity and you’ll see them alongside other such components like Charts and Views in the Solution explorer. From this we can already gather that it won’t be possible to move Business Rules across different CRM organizations as individual components like you can do with processes, instead they always travel with their parent entity in the solution files.

    CRM_2013_Business_Rule

    Business Rules have the nickname of Portable Business Logic (PBL), so there must be something else that makes them particularly easy to carry around then? The portability actually refers to the way in which the rules can be applied to all the different forms of the entity and also to how they will be carried over to the mobile client application (MoCA) on Windows 8 and iOS tablets. They are however form specific in the sense that you must define what the scope of the Business Rule is: either tied to a particular form of the entity or simply set to run on “all forms”.

    What can you use Business Rules for from a process automation perspective? Similar to the Business Process Flow (BPF) process type, Business Rules can be used for guiding the data entry and update tasks by dynamically changing the UI presented to the user, based on the values of other fields on the form. Typically CRM entities end up having far more fields available than what a user is really expected to fill or even view in a particular stage of a business process. Whereas the Business Process Flow can only touch the Process Control shown on the top of the entity form, Business Rules can manipulate any field on the form, setting it either as visible/not visible, required/not required and disabled/enabled. They also have the ability of presenting field specific error messages if a user tries to deviate from the intended process.

    Business Rules have a similar type of conditional statement setting as workflow processes do (if/then), but it is quite a lot more limited currently than the workflow editor options. For instance, you can only reference fields from the same entity you’re working on, so setting the requirement level of a contact form field based on the parent account record’s values won’t work. You are also limited to only specifying a single set of conditions that must all be true for the action to run. In order to build an “or” rule to cover multiple alternative conditions you’ll need to save your first Business Rule, then create a copy of it with Save As and have as many concurrent rules as there are options in your “or” statement.

    Unlike the Business Process Flow processes that are only able to present fields from the entity, Business Rules can actually update the record as well. The “Set field value” action allows you to input either a static value, copy the value of another field (on the same record) or perform a simple +/-/* calculation with two fields. For an in-depth list of Business Rule capabilities and considerations, look no further than this excellent article by Jesper Osgaard on Understanding Portable Business Logic.

    This first release of Business Rules for Dynamics CRM 2013 addresses many of the common scenarios where Javascript has previously been applied on entity forms to make them dynamically adapt to the business logic of an organization. However, there remain some frequently requested features that will still require form scripts to be developed, such as:

    • Create dependent optionset fields (filtering available values based on another field)
    • Set dynamic default values (“task deadline today+3 days”)
    • Show/hide form components other than fields (tabs, sections, subgrids, iFrames, Quick View Forms etc.)

    Based on the fact that Business Process Flows are categorized as a process record in CRM 2o13 whereas Business Rules are “only” a component of an entity, should you spend more time designing the Business Process Flow and resort to Business Rules only when you need to tweak some details on the forms? I personally don’t think that the BPF Process Control is necessarily the only right way for implementing guided processes in CRM 2013. For a transactional record with a linear process consisting of several stages with clear boundaries (the sales opportunity scenario) it is surely a natural fit, but in many situations the flexibility provided by the field level configuration of Business Rules can prove to be a more practical approach. At least ask yourself these question before committing to a BPF based design: 1) does it offer some required functionality that Business Rules could not replicate, and 2) can the process data naturally fit into the stages that the Process Control will display?

    Real-Time Workflows: Plug-ins For The Analysts

    For the past 10 years the Dynamics CRM workflows have been tirelessly performed their tasks behind the scenes, driven by the time slots that the asynchronous service on the CRM server has kindly allocated for them. Originally designed for executing workloads that didn’t have a need to present the results immediately to the same end user who triggered the event, they’ve since been frequently leveraged also in process automation tasks that would have performed much more smoothly with a synchronous execution (also known as “poor man’s plug-ins”). The powerful process automation capabilities presented in the workflow editor would have often been enough to meet the business logic customization requirements, had it not been for that delay in the logic’s execution that demanded the same logic to be replicated in custom code instead.

    In CRM 2013 workflows have now been promoted to a 1st class citizen status by adding one tiny switch: “Run this workflow in the background [yes/no]”.

    CRM_2013_Real-Time_Workflow

    Why is this option of running workflows synchronously so important then? Well, if you’re just using your workflow to send an email notification to someone, there’s precious little difference in whether the action takes place immediately or after one minute. However, if you are updating the current record that the user is currently viewing through the entity form, the fact that you can present the changes right away opens up a whole new world of opportunities for leveraging workflows to guide the business process.

    Nowadays when the new CRM 2013 entity form design leans towards a dashboard style of summary views presenting a number of subgrids of child entities, activities or activity feed posts, the need for immediate feedback on the UI applies also to the creation of related records through workflows. If your business process relies on the assignment of tasks to users rather than the “mark completed” checkbox driven style introduced by the new Business Process Flows, the fact that the user will see the process automation in action as he updates the records in CRM will surely help to build confidence in the system’s ability to manage the business process and distribute information to all relevant parties, without the need for manual emails or phone calls to coordinate the work.

    From a development perspective, Real-Time Workflows have a similar but likely far more significant impact on the division of labor between the business analyst and the .NET developer than the new CRM 2013 Action processes that we covered in part 1. Synchronous workflow processes can cover many of the common CRM customization scenarios that would have previously required developing a plug-in. While a custom plug-in will naturally still remain far more flexible in terms of its ability to query and manipulate data, the Real-Time Workflows will drive more and more custom code to be developed as Custom Workflow Activities rather than plug-ins.

    This is because of the fact that if you can isolate your code into a component that the business analyst can call from a standard workflow process, the configurability of the business process automation functionality will be greatly enhanced as future adjustments to the process can be performed through the CRM UI without touching any code. The development of re-usable components that extend the default capabilities of workflows also lowers the barrier of applying the same custom logic into new processes as the needs of the customer organization evolve.

    The less people it takes to solve a business problem through CRM and the shorter the lead time from identifying the problem to deploying the solution is, the more likely it is for the problem to get solved. This is the main reason why increasing the share of configuration tasks over development tasks is so critical for any business information system that needs to adapt to changing business processes and not just fulfill a static set of requirements. If you’ve worked with CRM systems beyond their initial implementation projects, you’ll surely know into which category these systems fall into.

    The Growing Business Process Automation Toolkit

    If we compare the old and the new world of process automation in Dynamics CRM, we can see that the tools available for no-code configuration of business process management functionality have grown considerably over the past few years:

    • CRM 4.0: workflows
    • CRM 2011: workflows, dialogs
    • CRM 2013: asynchronous workflows, real-time workflows, dialogs, business process flows, business rules, actions

    What this means from a system administrator, customizer or business analyst perspective is that if you haven’t yet started to take advantage of the process automation capabilities of Dynamics CRM, you’re really missing out on a significant share of the platform’s potential value to your business. At the same time the growing number of options in CRM can make it seem like an increasingly difficult topic to approach. How do you know which one of the six tools to pick for building a solution to a business problem you’ve identified?

    As discussed in part 1 of this article, Business Process Flows are essentially just a map of the process that you present to the end user, but they don’t perform any actions on the data on their own. Since the Action processes are currently only valid for scenarios that involve a developer resource, we can also leave those our when exploring the right tools of how to get started with CRM process automation. That leaves us with four tools to evaluate for their fit to get the job done. I’ve compiled some of the main characteristics of each of them into the following table to help you in the selection process:

    CRM_2013_Process_Automation_small

    You should pay attention to the following constraints of each tool when analyzing their fit for the task at hand:

    • Business Rules are the only way to perform actions right after the user updates a field. Workflows will not fire until the save event (which can be 30 seconds away in the new auto-save CRM 2013 organizations).
    • Workflows will run even when the records are created or updated through other means than the form (data import, integrated systems). Business Rules are only executed on the form.
    • Due to the aforementioned limitation, Business Rules also only ever apply to a single record at a time.
    • Workflows can reference data from related entities for read/update. Business Rules can only work with data available directly on the form.
    • The special capability of Business Rules includes manipulating the UI (hide/show fields, set requirement level, show alerts). Workflows only deal with the data.
    • Dialogs are a manually initiated subset of workflow functionality with a specific Wizard style UI. They also have one special skill: querying data from any entity, not just the directly related ones.

    I hope that this article has managed to highlight the new features in Microsoft Dynamics CRM 2013 that can help you build solutions for guiding the user through a business process and automate the related tasks. There is a lot to explore in the latest CRM release in this area and I’m sure we’ll discover many creative ways for applying these new tools in practice as more and more customers move onto the CRM 2013 / Fall ’13 platform.

  • Getting Your Head Around Dynamics CRM 2013 Processes – Part 1

    Workflows have always been a central part of the Dynamics CRM product. The typical need for having workflow functionality available in a CRM application has revolved around the sales force automation (SFA) requirements of implementing a sales process with predefined activities to be completed in different stages. As the Dynamics CRM product has evolved and expanded over the years (see this article for the complete timeline of MS CRM history if you’re interested), new capabilities have been added into the workflow engine, expanding the realm of possible use cases where workflows can act as the tool for automating data entry tasks, notifying users of important events or enforcing custom business logic in the various processes that CRM has been put in place to manage in customer organizations.

    Initially workflows were purely background processes not intended to be visible to the end users, but in CRM 2011 a new feature called Dialogs was introduced. This enhancement gave us the possibility of building “interactive workflows” with a user interface for both presenting output as well as collecting input from the user. As a result, the terminology in Dynamics CRM was adjusted slightly in the 2011 release, with the new Process concept being used to cover the two subcategories of Workflow Processes and Dialog Processes.

    The latest CRM 2013 release takes things even further on the process automation front and introduces several new features that greatly expand the platform capabilities. We’re increasingly moving away from the separation between interactive data entry forms and asynchronous background processes, towards a new reality where the core CRM product offers configuration tools for building applications that adapt to the actions of the users in real time and guide them through the business processes interactively.

    Due to this expansion in functionality, the concept of a “Process” in Dynamics CRM has gotten a bit more complex than what it used to be, since a process can nowadays mean so many things. Looking at the Process Center in CRM 2013, when you click the “New” button you’ll now be presented with a selection of 4 different process categories: Action, Business Process Flow, Dialog, Workflow.

    CRM_2013_Process_Center

    While this categorization may be perfectly valid from the platform’s perspective, I’d don’t think this is actually the most logical way to approach the available process automation capabilities of Dynamics CRM 2013. The UI presentation of the process categories ends up grouping together functionalities that are conceptually quite far apart and also leaves out some notable new possibilities that should be considered when building solutions for Dynamics CRM 2013.

    In this series of posts I will try to describe how I see the current process management toolkit of Dynamics CRM and provide some guidance on which particular tool to pick up in various customization scenarios. I’ll start off by covering the two new process categories of Business Process Flows and Actions.

    Business Process Flows: The Visual Process Map

    The one feature that immediately stands out when launching a CRM 2013 environment and navigating to a transactional record like a sales opportunity or a service case is the new Process Control shown on top of the entity forms. This graphical representation of the business process related to the record in question is an awesome way to visualize the stages of a linear process to the end user and it will surely be the single most important feature to increase the utilization of Dynamics CRM 2013 business process automation capabilities in customer environments.

    CRM_2013_Business_Process_Flow

    What’s really important to keep in mind, though, is that the Business Process Flow (BPF) process doesn’t provide any process automation functionality in itself. It only allows you to define the stages of the process and the fields to be populated during the stage, but the BPF won’t perform any actions on its own based on the user’s inputs. You can specify that certain fields in a stage are mandatory before the process can move onto the next stage, but you can’t enforce any other consequences. For this you will need the help of other process automation tools in CRM 2013.

    CRM_2013_Business_Process_Flow_2

    Another key consideration for Business Process Flows is that moving between process stages is something the user needs to perform manually. There is nothing in the BPF editor that would allow you set conditional logic like “when fields A, B and C are filled, move the record to Stage 2 of the process”. You can leverage the Dynamics CRM platform for building such automated stage changes, but you’ll need a bit of custom code to achieve it. Refer to this blog post by CRM MVP Scott Durow for more details on how to programmatically manipulate the process and process stage fields.

    Business Process Flows are essentially the way how you map out your processes to be presented to the end user. On the customization side they bare more resemblance to the entity form designer rather than the traditional workflow process editor, since you’re mainly configuring what fields to present in which stage, rather than building conditions or defining automatic actions that should take place when the conditions are met. In most scenarios you will find yourself leveraging BPF’s alongside other process types to bring in the automation part of process management.

    Actions: Components of Custom Processes

    While BPF’s are highly a highly visual component and therefore easy to grasp, the new Actions introduced by CRM 2013 will surely be competing for the most difficult feature for a system customizer to understand in terms of how and when to leverage them. Simply creating a new Action process in CRM won’t give you too many clues on how they are different from the traditional processes and after saving the process you’re left wondering how exactly you would trigger the Action.

    In my mind the new CRM 2013 Actions bear a resemblance to a business logic extensibility feature that has been with us since CRM 4.0: Custom Workflow Activities. Rather than being a replacement, Actions are more like the other side of the same coin. Let’s compare the two:

    • Custom Workflow Activities can’t be built within CRM but you can leverage them inside a workflow process through the graphical process editor UI.
    • Actions are exactly the opposite: you can build them within the CRM process editor but you can’t use them anywhere without custom code.

    What this means in practice that in a simple no-code CRM environment the Actions process category won’t be a relevant feature for the system customizer (at least in their current form). In a more complex environment they can provide a new practical method of keeping the organization’s business process logic outside the custom code that is being developed for UI customization and integrations with external applications.

    CRM_2013_Action

    Thinking of a real world scenario for Custom Workflow Activities, if a business analyst is using Dynamics CRM workflow processes to automate a service case SLA management process and wants to configure notifications based on the number of business days that a case record has been open, he won’t be able to achieve this with the built-in workflow date calculation tools. However, he can request a .NET developer to write a Custom Workflow Activity that will perform the required date calculation and then include this as a component in his workflow process. This will allow the actual business logic around SLA management to remain configurable in the workflow process, which means any future changes to how the case record needs to be updated, which person is notified of SLA violations etc. can all be implemented without touching the custom code that’s used only for calculating the number of business days between two dates. Also, since the custom code is isolated inside a Custom Workflow Activity, it can be referenced in any number of workflow processes.

    Looking at this scenario from the Actions perspective, let’s say that we have integrated the Dynamics CRM case records into a portal or other custom application that consumes and updates the data in a similar way as the native CRM web client does. All of the entity metadata will be already be available through CRM web services, but with the help of Actions in CRM 2013 we can also expose a piece of our custom business logic to the integrated applications and manage it in one place through the CRM UI. The example that Microsoft has used while explaining Actions is service case escalation, in which the business analyst could configure all of the steps included in the escalation event (activities, case routing, service contract updates etc.) through a single “Escalate” process and the other applications could then call this message defined inside the Action. Input and output parameters can be defined for Actions to allow them to reference the correct CRM records and also provide CRM data back to the original caller.

    As we can see from this scenario, just like the Business Process Flows, Actions alone won’t perform any automated tasks inside CRM. They can be used as components in defining automated tasks that are triggered based on an event that came from somewhere else, through the CRM web service. If you’d like to see how Actions might be called from a custom button in CRM through Javascript, have a look at Gareth Tucker’s great blog post on this topic.

    The Real Process Automation Tools in CRM 2013

    Now that we’ve gotten the two new process categories of Business Process Flow and Actions covered, it’s time for my favorite new features in CRM 2013: Business Rules and Real-Time Workflows. Even though Business Rules aren’t formally categorized as processes in CRM, and Real-Time Workflows are presented as just an extension of the existing workflow processes, in practice these are the features that deliver exactly what a CRM end user would consider as “process automation”, due to the immediate feedback that they can provide.

    In the next part of this post I will explore how these new tools compare to the existing Workflow & Dialog features and how they can be combined to deliver a configurable process automation experience that goes beyond what the previous versions of Dynamics CRM had to offer.

  • CRM Rocks Podcast: Discussing the New CRM 2013 Features and User Experience

    CRM_rocks_podcastThere’s a large number of great CRM blogs out there, but how many Dynamics CRM podcasts do you know of? Well, here’s one website you should definitely take a look at: CRM Rocks! Markus Erlandsson has started a new podcast series that focuses purely on Microsoft Dynamics CRM topics.

    In the first episode Markus interviewed CRM MVP Gustaf Westerlund on the available tools and best  practices that any Dynamics CRM developer should be aware of. I had the honor of being guest nr. 2 on CRM Rocks and got to share my thoughts and observations on the latest and so far the greatest release, CRM 2013. Click here to access the podcast recording in MP3 format.

    Some of the topics that Markus and me discuss during the podcast include:

    • The new UI: how will the new form design impact the user experience and what requirements does it impose on system customizers.
    • Business Process Flows: how are they different from the other process types and what do they mean in practice for the management of tasks related to business processes such as sales opportunity management.
    • Business Rules and Actions: what are the new options for code-free CRM configuration and where do we still need .NET developer resources.
    • No more ribbon: are we missing out on past functionality or are we actually better off in the end.
    • A world without popup windows: why is CRM now easier to learn for new users.
    • One CRM platform, many CRM applications: what the extended client support for mobile devices means for CRM usage scenarios.
    • Auto save = no more “post buttons”: why you need to be careful when upgrading your custom business logic stored in scripts and plugins.

    I personally enjoyed the discussion a lot and if anyone has 55 minutes to spare on listening to my ramblings on CRM 2013 then I hope you manage to get something out of it, too!

  • No-code Customizations with North52 Formula Manager, Part 3: Case Resolutions

    In the previous articles (part 1 and part 2) we’ve explored how the North52 Formula Manager can be utilized in automating steps related to the sales process. This time we’ll be looking at a scenario related to service management, in an effort to make it easier to share knowledge and report on the resolutions of cases recorded in the Microsoft Dynamics CRM database.

    Cases vs. Case Resolutions

    Case_resolve_cancelIn theory it should be pretty straightforward how you work with a case record: they are support tickets that are initially open (active) when you create them and eventually they end up getting closed as either resolved (service was provided) or cancelled (duplicate ticket, customer never replied etc.).

    The point where complexity raises its ugly head is how the resolution process works: instead of entering the case resolution details onto the case record itself, the user is presented with a window that creates a Case Resolution activity underneath the parent case. While this is a perfectly valid design in terms of the nature of the interactions, as there could be situations where the case gets re-opened and resolved again (thus being a 1:N relationship with the case), it does make it more complicated to work with the resolution data later on.

    Resolve_case_dialog

    For example, say you’d want to study the resolved cases by using a view of the case records. In that view you can see the case subject, owner, status and other standard fields, but there’s no information visible on what the actual resolution to the case was. “Ok, so I’ll need to customize the view and show columns from a related record. That’s not too difficult, now is it?” Unfortunately that’s not going to work, because the information we’re interested in resides on the N side of the relationship. Since there can be several case resolutions for a single case, no columns from this entity can be displayed in a case view. So, we can’t construct a nice Q&A list that the service reps could leverage in scanning for similar cases on a new question from a customer. We can only see the problem, not the resolution.

    Resolved_cases_view

    You could build a view of case resolutions, the child entity in this relationship, but that’s not very convenient either. Although case resolution is an entity of its own, it’s not actually available in Advanced Find to directly build queries on. It is possible to access a list of case resolutions by crafting a view of activities with that specific type, but you’ll still be limited to only the generic activity fields. As an example, the field Billable Time (Time Spent) cannot be accessed in a view, which makes it rather difficult to report on this data entered as a part of the service process.

    Activities_Advanced_Find_case_resolution

    Using a Formula to Replicate the Case Resolution Fields on the Case Form

    Luckily Dynamics CRM is a flexible platform that allows you to develop new business logic to fulfill the requirements for your service process. In this situation, if we could simply have the Resolve Case dialog fields copied over to the parent case, this would solve the aforementioned problems. So, how to proceed then?

    If we want to alter the default behavior or the service entities, we should first have a look at the workflow process capabilities of Dynamics CRM to see if can  configure a workflow rule that is triggered when the case resolution is created. This time we won’t get very far with that idea, though, as neither the case resolution nor the activity entity can be used as a workflow trigger. Fair enough, we’ll then need to come up with a lower level solution to meet this requirement. Assuming we have access to a .NET developer who knows the Dynamics CRM SDK, creating a custom plug-in to copy the fields to the case record would be a worthy option to consider. Since the title of this post promised “no-code customizations”, let’s instead look at how we could achieve the same functionality with the Formula Manager.

    First we need a place to host the case resolution data of course, so let’s add three custom fields on the case entity: Resolution (text field), Resolution Description (multiple lines) and Time Spent (whole number with duration format). On the case form they can be put into a section of their own and set as disabled, since the user shouldn’t directly update them.  Then we’ll create the three formulas that will populate these fields with corresponding values from the case resolution entity.

    Case_custom_fields

    We’ll be using a formula of the type “Save – To Parent” and attach it to the create event of the case resolution entity. As our target (parent) entity we can select case, but notice that you’ll actually need to specify the relationship field value first before you’re able switch the value in the target entity field. Let’s take the Resolution Description field we just created as the target property. The formula itself in this case will be very simple, since all we need is a value directly from the source entity. We can use the source entity tree visible in the bottom left corner of the screen to browse through the available fields or just type in directly the value [incidentresolution.description].

    Formula_case_description

    The other two fields will get an identical treatment, which means we can click on the Clone Formula button on the ribbon and create two copies of the original formula. Just update the target property field and select a new source field value into the formula description window accordingly. After we’re done, we can publish the formulas and try them out by resolving an existing case.

    Resolve_case_formula_1

    After we’ve entered the details into the Resolve Case dialog fields and clicked OK, our formula will update the underlying case form in real time to reflect the same values presented directly on the resolved case record. Unlike asynchronous workflow processes, the formulas can perform their tasks right in front of the user, which makes the user experience more consistent.

    Resolve_case_formula_2

    Making Use of the Resolution Data

    Now that the fields are available on the case entity, we still need to ensure that the user actually has access to them through all the necessary routes. First we should of course include them into the Resolved Cases view we talked about earlier.

    Resolved_cases_view_updated

    Seeing the resolution field contents directly in the view is a great improvement, but an even more important feature is to enable the users to search for this information. You see, one of the peculiar default settings of Dynamics CRM is that the Quick Find view for case entities only covers active (open) cases. (more…)

  • No-code Customizations with North52 Formula Manager, Part 2: Line Items

    In a previous post I wrote about how the North52 Formula Manager solution can help you build some common customizations that would otherwise require writing Javascript for Dynamics CRM entity forms. The scenarios included:

    • Setting default values for lookup fields
    • Dynamically changing the field requirement level
    • Displaying popup warnings
    • Launching dialog process windows

    This time I will show a few examples of the Formula Manager capabilities that would typically fall into the domain of writing C# plugin code to enhance the business logic of Dynamics CRM. Being a functional CRM consultant that doesn’t normally deliver a single line of code (at least for production environments), these scenarios would traditionally require me to hand over the task to a CRM developer. What we’re about to see is an alternative method of creating just formulas with the graphical tools available in the solution package to get the same job done.

    Updating Opportunity, Quote, Order or Invoice Products

    In Microsoft Dynamics CRM 2011 you can trigger workflow processes on the line items of Opportunities, Quotes, Orders or Invoices. This allows you to execute custom logic when, for example, new Quote Product rows are added for a Quote record. Unfortunately what you cannot do with standard workflows is to actually update the line item record itself.

    Workflow_update_quote_product

    Well, this surely looks like a dead-end for most of the use cases you could think of for triggering the workflow process in the first place. If I wanted to, for example, pull information from the selected Product record and save it on the Quote Product’s fields, such as product description, vendor details or a line item number to sort the quote rows, this apparently cannot be achieved with CRM’s workflow functionality.

    Let’s look at how we can solve the problem with Formula Manager instead. In our scenario we would like the description field of the Quote Product record to be updated with the description field contents of the selected Product record. What we therefore need is a “Save – To Current Record” type of formula that is triggered on the Create & Update events of the Quote Product entity. We can limit the update events only to the Existing Product field by setting the Source Property value. The Target Property of our formula should be the Description field.

    Finally, we need the actual formula that will feed the values from the related Product record into the Quote Product’s description field. To retrieve the description field contents we’ll use the FindValue function and tell it to search for a Product record that has the same productid as the existing product selected on the Quote Product record. While we’re at it, let’s also ensure that the Quote Product actually has an existing product instead of a write-in product by verifying the productid field contents with the ContainsData function. The end result will look like this:

    if(ContainsData([quotedetail.productid]), FindValue(‘product’, ‘productid’, [quotedetail.productid], ‘description’),’NoOp’)

    FormulaManager_update_quote_product_description

    Now when we navigate onto a Quote and add a new Quote Product record underneath it, the description field will inherit the value from the related Product and display it directly on the Quote Product form (assuming you’ve made this default field visible on the form in the first place).

    Quote_product_description

    Not that much more complicated than building a workflow rule, just as long as you familiarize yourself with how the formulas work and how to format the parameters required by the functions.

    Creating Line Items

    Let’s proceed with exploring the world of line item records in the sales process. Updating existing records automatically is a nice capability to have for sure, but what about automating the complete process of creating the line items for an Opportunity, Quote, Order or Invoice? For example, if we wanted to ensure that there is always a standard Delivery Fee or other persistent item included whenever we’re creating an Order of a specific type (or for a specific customer group), then this is another area where the out-of-the-box functionality of Dynamics CRM workflows can’t be used, since new Order Product records cannot be created through a workflow rule.

    With Formula Manager we have no such limitations in place, rather we are free to create any type of records we want with the CreateRecord function. The example formula below was actually provided to me by North52’s John Grace to demonstrate the solution’s functionality. The Save – Perform Action formula is attached to the Create event of an Order record, which in turn triggers the creation of a new Order Product record. The contents of this auto-created line item can be defined either directly in the formula or alternatively queried with the FindValue function familiar to us from the previous example.

    CreateRecord(‘salesorderdetail’,
    1,
    ‘salesorderid.salesorder.’ + [salesorder.salesorderid],
    ‘productid.product.’ + FindValue(‘product’, ‘name’, ‘Bike’, ‘productid’),
    ‘uomid.uom.’ + FindValue(‘uom’, ‘name’, ‘Primary Unit’, ‘uomid’),
    ‘quantity.10’
    )

    FormulaManager_create_order_product

    Now, as a limited time special offer, any new Order that we create (or a Quote that we convert) will get 10 Bike products added onto it with their unit price dynamically retrieved from the Price List selected on the Order. What a sweet deal!

    Order_Products

    Cloning Records

    For a Dynamics CRM administrator these type of automated steps can be really handy in enforcing business rules and ensuring correct entry of data onto sales records. If we’d show them to your typical salesman, though, he might not be so impressed with this type of detailed process automation functionality.

    “Sure, it looks like we could save a few clicks with these formulas. But here’s the deal: many of the quotations I make are practically identical. They contain the same line items every time, with only some variations in quantity and discounts given. What I’d really want to do is simply select a quote I’ve created for another customer and create a copy of it. You know, the “Save As” button that’s found in all the other Office applications. Why couldn’t CRM also have that? It would be a huge time saver for me.”

    Ever had this kind of a discussion with your CRM users? If you have, then you’ll surely appreciate the fact that Formula Manager provides a Clone function that allows you to create a new copy of any existing record. Not only that, but the function also clones all the related 1:N & N:N records, which means you can create a copy of both the Quote and Quote Product line items with a single function!

    To get an understanding of how the function could be leveraged in delivering the “Save As” functionality your sales users have been asking for so long, watch this video that demonstrates not only the formula in action but also how you can use the Ribbon Workbench to build a custom Clone button for the required entities.

    Clone_Quote

    Think these type of features would be useful to have in your Dynamics CRM organization? Then go ahead and grab the fully functional Standard Edition of Formula Manager that allows you to have 10 active formulas at a time, for test or production use.

  • No-code Customizations with North52 Formula Manager

    North52North52 Formula Manager is a very interesting solution that promises to simplify the process of customizing and extending Dynamics CRM by offering a graphical toolkit to implement custom business logic that would otherwise require developing plug-ins in C# or adding Javascripts on the forms. Instead of writing custom code, the business logic can be configured through the N52 entities inside CRM, with the help of a Silverlight based editor to write formulas that check conditions, perform validations, update fields etc.

    In this article I’ll show you a few simple examples of how a person with no coding skills can perform some customizations that go beyond the GUI tools that Dynamics CRM offers. I’ll use the opportunity entity to add some client side actions to make the sales process a more guided experience for the end user. You can grab the free Standard edition of Formula Manager and use it’s 10 available formulas to try out these examples in your own CRM environment, or watch some of the training videos from North52 that cover several other scenarios.

    Default values

    The sales records in Dynamics CRM contain a few fields that sometimes don’t deliver any added value to the user, but they still need to be filled for each record. One common example is the usage of the price list. If your organization only has a single valid price list at any given time, the CRM users would surely appreciate it if the system could automatically populate the lookup field with the default price list when creating a new opportunity.

    Opportunity_default_price_list

    This is a very simple formula where all we basically need to do is populate a lookup field with a static value. To get the GUID of the price list, open it’s form in a new IE window by pressing Ctrl+N and find the string like “3F2504E0-4F89-11D3-9A0C-0305E82C3301” from it. Then create a new N52 Formula record and define the formula type as Save – To Current Record. We’ll set the mode as Client Side Classic and set it to run on the Create event, as we want the price list field to be populated with the default value only once – when the user creates a new opportunity record. The source and target entities should both be set to opportunity, as we’re updating the current record. The source property in this case is the event that triggers the formula, so let’s select OnLoad to fill the field immediately when the form is opened. Finally, the target property should be the field that will be updated with the results of the formula, in this case Price List.

    Different field types on the CRM form require different kinds of update procedures. Since we’re dealing with a lookup field and populating it as a client side event, let’s pick the SetClientSideLookup function from the N52 Formula menu and give it the required parameters of the entity name, record GUID and record display name:

    SetClientSideLookup(‘pricelevel’, ‘5EF541AA-67B6-E211-93F7-08002719F2F4’, ‘Default List’)

    FormulaManager_opportunity_default_pricelist

    Now we’ll just need to publish the formula and go test it out by creating a new opportunity record and verifying that the price list gets set to the record we wanted. In case you get an error prompt from N52 Formula Manager while opening the form, please revisit the formula record and verify that you’ve selected the correct options.

    Required fields

    Changing the requirement level of a field based on another field on the form is another common requirement. Let’s assume we have a simple sales process with three stages (picked up from the default CRM sample opportunity data): 1) Prospect, 2) Qualify, 3) Closing. We’ll use the Status Reason field’s (customized) values to drive the process and we want to enforce the following business rules:

    • If stage = 2) Qualify then make Estimated Close Date field required
    • If stage = 3) Closing then make Estimated Close Date and Estimated Revenue fields required

    In the UI the user would see the requirement level change dynamically when he or she changes the Status Reason field value and clicks elsewhere or tabs out of it.

    Opportunity_required_fields

    To achieve this feature with Formula Manager, we would build a formula that references the statuscode ID values and the schema names of the fields we want to set as required. Something like the following if-statements:

    if(([opportunity.statuscode]=’2′), SetRequiredFields(‘estimatedvalue’), if(([opportunity.statuscode]=’3′), SetRequiredFields(‘estimatedvalue’, ‘estimatedclosedate’), SetNotRequiredFields(‘estimatedvalue’, ‘estimatedclosedate’)))

    Basically what we do in the formula is first check for the stage 2, then stage 3 and finally use a default action for stage 1 to return the fields into not required status (so we also support moving backward in the stages). We’ll set the formula to run on the opportunity entity as a Client Side – Perform Action formula, tied to the source property of the Status Reason field, which effectively means it’s triggered with the OnChange event of that field as the user manipulates the form values. (more…)

  • The new Polaris UI in practice

    CRM Online users may have already started thinking about when their organization would be getting the December 2012 Service Update. The good news is that we have an actual release date now, but the bad news is that it’s not in December 2012. Check out this link for more details, including the release date for cross-browser support for on-prem CRM in the form of Update Rollup 12.

    Anyway, as we await for the new process flow oriented user experience to be enabled in the cloud, here’s some nice live footage of how the new UI works in practice. In this YouTube video Reuben Krippner walks us through the changes you can expect to see in your CRM once the December 2012 Service Update has been applied.

    Some things worth paying attention to in the video include:

    • The browser client running on Chrome (including administrative UI)
    • New social dashboard including the Activity Feeds web part
    • Inline editing and adding of subgrid items (notice the lack of any save buttons)
    • Recording a completed phone call directly on the lead form
    • Lookup existing contacts or accounts from the Process Control component
    • Transition from a lead to an opportunity without any popup window appearing
    • Moving forward and backward freely in the process stages
    • Editing process stage fields with the Process Control Customization Tool
    • The new forms in the customization UI (and the lack of support for any form scripts in this release)
    • Simplified UI of the iPad Sales Experience browser client on Safari

     

  • Breaking down the Polaris and Statement of Direction documents

    After the announcement in July 2012 regarding the delayed delivery schedule of the CRM Anywhere functionality, Microsoft has been promising that their updated product roadmap would be announced “soon”. Well, it took until November eventually, but we now have two new documents available from them: the Statement of Direction and Microsoft Dynamics CRM December 2012 Service Update Release Preview Guide. In this post I’ll share a few thoughts and questions that these documents have raised in my mind.

    Polaris (Microsoft Dynamics CRM December 2012 Service Update)

    Much of the contents of Polaris was revealed in eXtreme CRM 2012 Las Vegas and tweeted out into the online communities. One major piece of news from there is only casually mentioned in the beginning of the Release Preview Guide document, so let’s emphasize it here once more:

    This document is organized to highlight specific investments included in the December 2012 Service Update for Microsoft Dynamics CRM Online. This release begins in mid-December 2012 and will continue through January 2013.

    Yes, on-premise and hosted customers will still need to wait another 6 months while the new functionality is previewed in the cloud. The Orion release, currently scheduled for around mid-2013, will include these new treats into the CRM server bits you can download and deploy on your own or outsourced hardware. In the meantime, there will be a gap during which some UI customizations and development can be done only in CRM Online, so remember to take this into consideration when planning you solution deployment strategies.

    The new Flow UI, also known as the “Process-Driven UI” or “Refresh UI”, has been shown from the user’s point of view already earlier, but in the Release Preview Guide we get a first glimpse into the configuration options of how you can actually adjust it to match your real business processes. The Process Control Customization Tool appears to consist of a basic set of stages and steps, with no direct connection to the familiar workflow or dialog processes. Of course if you trigger a workflow process from a field value change you could include much more business logic into the stages and steps. The document mentions that there will be “several pre-defined steps such as locate existing contact and account”, so we’ll need to wait and see if the process steps will actually provide a new extension point that allows developers to create custom steps.

    Ever since the Yammer deal in June, we’ve all been wondering (well, perhaps it’s just me who’s obsessed with these things) how this social business tool would be integrated into Dynamics CRM and specifically what it will do to the Activity Feeds functionality introduced in Q4 2011 Service Update. Looking at the Polaris UI preview, we still don’t have too many details about this, but at least there’s a screenshot for us to stare at. Back in July when the Flow UI was first shown, the Activity Feeds were presented on the opportunity form alongside activities and notes/attachments, but now it’s been replaced by a Yammer feed. However, the distinction between auto posts and user posts in the menu suggests that there’s a bit of the CRM Activity Feeds functionality in play here, since Yammer doesn’t have such concepts in their own product.

    Showing updates regarding CRM records in the Yammer UI was already possible before Microsoft bought Yammer, thanks to the integration they had developed. In the release preview guide we can now read that “Microsoft will enable the ability to post messages from Microsoft Dynamics CRM to Yammer and vice versa”, which suggest a deeper level of integration, most likely leveraging Yammer’s Enterprise Graph. I guess it’s safe to say by now that the CRM R8 beta functionality developed for CRM Activity Feeds to filter the feed content has been permanently cancelled and all the efforts are aimed at integrating Yammer into Dynamics CRM. However, Microsoft will probably not completely rip out the existing feeds from on premises Dynamics CRM deployments nor implement a non-cloud Yammer, so the transition may take a while. Another thing worth noting is that the current free version of Yammer does not support any integration to applications like CRM, so the Enterprise Plan for Yammer may be required in order to leverage the new functionality in Dynamics CRM unless Microsoft changes the pricing policy.

    Bing Maps integration will be available for the Flow UI, where “addresses for contacts and accounts will be displayed in an embedded contextual map provided by the Microsoft decision engine Bing”. There were some good comments to my previous Future Stars blog post about the licensing of Bing Maps, so you might want to check them out if visualizing your customer addresses on an integrated map is of interest to you. Just like with Yammer, currently the Bing Maps API requires a separate license when used in internal applications and there’s no mention of any changes to this model in the release preview guide, so it’s best to assume that these new Polaris features will not be free to users with a Dynamics CRM Online license alone.

    Cross-browser support arrives with Polaris, but it’s a bit of a “yes and no” regarding support on iPad Safari browser. Yes, users will be able to access something else than Mobile Express on their iPad, but it’s not the same browser client as you’d have on a PC or Mac. A special version of the web client has been created for the iPad only, utilizing the new Flow UI forms. However, as the Flow UI is only available in a limited number of entities so far, only the “sales experience” is enabled in the iPad CRM client version. Judging by the menu below you can only access accounts, contacts, leads and opportunities. Any other entities (presumably even quotes, orders or products) will require you to click the “Launch Mobile Express” link, which will take you back to the CRM experience designed for pre-iPhone era smartphones. The Polaris version of iPad client seems therefore like an intermediate solution while we await for the full tablet UX to arrive.

    So, where’s the Dynamics CRM Mobile part of the CRM Anywhere release? Hmm, not mentioned in this document, so let’s check out the long term roadmap next.

    Statement of Direction, November 2012

    This document discusses the Dynamics CRM product vision for the next 36 months and is therefore much less specific on the upcoming functionality than the Polaris release documentation. It starts with a list of upcoming applications to be added into Dynamics CRM in future releases. Putting the terminology into context, an example of a new application for CRM 2011 was goal management, so these would likely include a bunch of new default entities, business logic, UI enhancements and potential new integration points.

    On the SFA front we’ve got Quote, Order, and Pricing Management, which is a very important area for Dynamics CRM to step up it’s game. Anyone who’s ever demoed the existing UI for creating quotes knows that the popup jungle is something you want to avoid showing to potential customers, so a more flat user experience for working with product lines . In the Service section the term Knowledge Management brings a breath of canned air from the past decade, especially when we later on hear that “SharePoint will power next-generation content and knowledge experiences to strengthen supporting business processes”. All joking aside, it’s pretty obvious that the KB functionality in Dynamics CRM is in need of a makeover, so bringing SharePoint into the picture is the obvious route for Microsoft to improve its CRM offering for service users.

    The direction of marketing functionality development in Dynamics CRM will be shaped by Microsoft’s latest acquisition, Marketing Pilot. Although no one seems to have heard about the company before the MS press release, that doesn’t mean it wouldn’t be a good choice for the foundation which the v2.0 of Dynamics CRM marketing module would be built on. Whereas Skype and Yammer were big existing brands with their own technology stack, MarketingPilot is a small company that has developed their product on top of Microsoft’s platform and should therefore be much more easily assimilated into the Dynamics CRM product. Not a big splash like Salesforce.com’s acquisitions of Buddy Media or Radian6, not even close, but Microsoft have said marketing automation is one of their key investment areas for CRM, so let’s wait and see how that story develops.

    While not exactly a bullet point in the Statement of Direction document, it’s pretty clear that Surface will be the central vehicle for launching the re-imagined Dynamics CRM experience and Microsoft have come up with a nice promotional video to build up the hype while we wait for the Windows 8 app to arrive. Folding the “Metro CRM app”, Yammer, Skype and Surface all into one sure does result in a compelling image of what the next generation of customer relationship management applications could be like.

    What about devices other than the Surface? More precisely: what about mobile as in smartphone apps? Unfortunately there’s not much to say about them, except that there’s another delay for supporting iPhone and Android devices. Even the upcoming Windows Phone 8 customers won’t initially be able to use their mobile device for more than reading CRM records and posting Activity Feeds posts with the existing Microsoft Dynamics CRM Mobile client.

    The February 2012 announcement of Microsoft partnering with CWR Mobility pretty much put everyone in a waiting mode, as the official mobile client for Dynamics CRM would have obviously been the safest bet for any customer or partner. Well, by now we can clearly see that the deal is off and the CWR client is no more “official” than Resco, TenDigits or any other ISV offering. Instead of buying a solution, Microsoft eventually decided that they need to be the ones who build it. In the long run I believe this is definitely the right strategy for them, as mobile is simply far too important to be an outsourced component of CRM.

    We’ve heard from the Dynamics team that they’re betting big on HTML5 to deliver experiences across different devices. Even though Facebook famously backed off from their HTML5 strategy in favor of native apps, I’m somewhat optimistic that the path chosen by Microsoft can work better in the business apps landscape. MS will naturally build native CRM clients for Windows 8 and Windows Phone 8, but the effort required in delivering an enterprise scale mobile solution for a fragmented Android platform probably doesn’t make sense to them. Those are the gaps that ISV’s are there to fill, delivering more advanced offline clients for non-MS mobile platforms.

    At the same time as the device specific offering is being rearranged, we’ve heard from a source claiming to have official confirmation from Microsoft that the Dynamics CRM CAL price will soon be increasing by 15 percent, in preparation of the upcoming support for more devices per user. Since there will not be any additional 30 USD monthly fee per mobile user, the user CAL can be leveraged on more devices and therefore it delivers more value to customers, which in turn means Microsoft sees it can justify a price increase. Although no one ever rejoices when the cost of a service goes up, I’m actually in favor of a pricing strategy where the mobile and tablet clients will be as easy as possible for any Dynamics CRM users to access, rather than the customer organizations having to go through the internal negotiations of who really needs a premium license for mobile CRM usage. There’s always the device CAL for those who need to just enable CRM access on a single PC per user, after all.

    Conclusions

    Polaris is certainly an important update for Dynamics CRM and in many ways it feels like the starting point for “the next chapter” of the product. With all the UI and client changes lined up for Orion in mid-2013, in my mind it raises the question that will this already be a fully new product á la Microsoft Dynamics CRM 2013? Any which way, I think Microsoft is right now delivering a compelling vision with their whole product portfolio and announcements this year, and this reflects positively on the Dynamics applications as well.