This is the 11th blog of this series, before this I have created last blog from module 3 on the topic “Manage Scheduling options”  which you can check here: MB2-877 MICROSOFT DYNAMICS 365 FOR FIELD SERVICE MODULE 3 TOPIC – MANAGE SCHEDULING OPTIONS

In this blog we are starting with the topic – Implement the Schedule Board from module 3 “Scheduling and dispatch work orders”:

  1. Identify features and uses of the booking requirements view
    Here are some important points regarding the requirement view which you can find below when using scheduling board:


    A. Unscheduled items are displayed at the bottom of the Schedule Board in Booking Requirements
    B. Will display all unscheduled requirements for any entity that has been enabled for the universal scheduling
    C. Predefined view for unscheduled Work Orders is included as part of the Field Service Solution
    D. Additional requirement views can be defined to provide a more customized scheduling environment

  2. Implement the integrated map feature

    A. Helps determine best resource for job based on proximity
    B. Each resource is color coded for easy identification
    C. Routes are created and updated as resources are assigned jobs


  3. Manually schedule work orders

    You can manually schedule orders – Ways to manually schedule a Work Order:

    • Drag unscheduled Work Order from list view
    • Drag unscheduled Work Order from map view
    • Blocking out a spot on the Schedule Board directly
  4. Re-assign and re-schedule work order 

    for re-assigning or re-scheduling a work order a user can simply drag and drop the work order to other placeholder ( time + resource).


  5. Move incomplete work orders

    As seen above where in we have dragged and dropped a work order to other resource and rescheduled it to a different type , you can in similar way to move incomplete orders to a future date. i.e if you notice at the end of the day an order has not completed which was scheduled to be completed today, you can schedule it for available time tomorrow.

  6. Generate driving instruction for field agents 

    with your schedule board you have option to generate driving route and email your agents or get the print outs. To do this click on the work order and click on actions > Get directions:

    then click on Directions post verifying the address and click on print or email:


  7. Create additional schedule boards

    You can create new schedule board for your organization, by default each organization has one schedule board. to click a new one , click on + button and define the properties such as default views, map settings etc:


    You can create Private or Public boards.

  8. Create web resources to define custom booking rules

    Booking rules in Dynamics 365 for Field Service allow a System Administrator to create warning or error messages that users see when creating or editing a resource booking record, based on custom conditions. For example, a booking rule could be created to warn a user when they attempt to book a work order to a resource on the schedule board that doesn’t have the skills required for the job.

    Set up booking rules to validate a booking when it is created or modified.

    1. From the main menu, click Field Service > Administration, and then choose Booking Rules.
    2. On the Active Booking Rules screen, click +New in the upper left corner.
    3. Type a Name for the new booking rule.
    4. Select a Web Resource that has been previously created by the System Administrator to contain the validation logic and warning text.
    5. Enter the Method Name.
    6. Click Save.

That’s it for this blog – I will see you in the next blog.


With the Dynamics 365 v9, you can add an auto-number attribute for any entity. Currently, you can add the attribute programmatically. There is no user interface to add this type of attribute. 

I have in my other blog showed how you can achieve this using C#(console application) : CREATE AUTO-NUMBER ATTRIBUTE IN DYNAMICS CRM 365 USING ORGANIZATION SERVICE + SIMPLE CONSOLE APPLICATION

In this blog I am going to show you how you can achieve this using a simple WebApi request, By default this blog will also help you to learn and see how you can use postman to connect with dynamics 365 online to perform certain WEBAPI operations as we will be suing postman to fire a web api request.

  1. If you don’t already have POSTMAN, download desktop application here it here : POSTMAN Desktop Client  or simply add a chrome extension : Chrome Extension . In my case I am using a chrome extension. Launch the application and select Action as “POST”:

  2. Enter below URL in the next url section:
    Enter the correct organization url and entity logical name on which you need to create an auto number field.

  3. Now click on “Headers” and add below:
  4. Now click on “Body” tab and select “raw” option:
  5. Enter below Json request in the editor:
 "AttributeType": "String",
 "AttributeTypeName": {
  "Value": "StringType"
 "Description": {
  "@odata.type": "Microsoft.Dynamics.CRM.Label",
  "LocalizedLabels": [
    "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
    "Label": "Serial Number of the widget.",
    "LanguageCode": 1033
 "DisplayName": {
  "@odata.type": "Microsoft.Dynamics.CRM.Label",
  "LocalizedLabels": [
    "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
    "Label": "Serial Number",
    "LanguageCode": 1033
 "RequiredLevel": {
  "Value": "None",
  "CanBeChanged": true,
  "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"
 "SchemaName": "new_AutoNumber",
 "AutoNumberFormat": "WID-{SEQNUM:5}-{RANDSTRING:6}-{DATETIMEUTC:yyyyMMddhhmmss}",
 "@odata.type": "Microsoft.Dynamics.CRM.StringAttributeMetadata",
 "FormatName": {
  "Value": "Text"
 "MaxLength": 100

       6. change the “SchemaName” of the field as per your need in my case its “new_AutoNumber” and also you can change the AutoNumberFormat as we discussed in the last post : : CREATE AUTO-NUMBER ATTRIBUTE IN DYNAMICS CRM 365 USING ORGANIZATION SERVICE + SIMPLE CONSOLE APPLICATION

    7. Okay its starting to look really good. but here comes the important part how do we setup the authentication – to do this click on “Authorization” Tab and select Type as “OAuth 2.0”:

    8. When you select Type as “OAuth 2.0” you have option to “Generate Access Token”


    9.Click on Generate New Access Token:

    10. Enter Details as below : 

      Token Name : Desires Name i.e dynamics crm Online

      AuthURLhttps://login.windows.net/common/oauth2/authorize?resource=%5Byour dynamics crm plain URL i,e https://passion4dynamicscrm.crm8.dynamics.com%5D

     Access Token URL : https://login.microsoftonline.com/common/oauth2/token 

     Client ID : follow this blog i have created to get client id of your dynamics CRM : REGISTER DYNAMICS CRM APP WITH AZURE FOR OAUTH 2.0 AUTHENTICATION

   11. Now click on Request Access token, you will be asked to login to your dynamics CRM, after successful login you will have a screen below:

     Select the token which we have setup and change “Add token to” to Header and click on “Use Token” which will add this to headers.


    13.  we are all set to execute our request , so click on “Send” , if everything was setup properly you will get success with no response:

   14. Open you dynamics CRM and navigate to Settings > Customizations > Customize the system > entity name > fields and notice the field has been created:

   15. Go ahead and put this field on the form and create some records.


   There you go! I hope this helps! Please feel free to let me know if you face any issues during this operation.

Register Dynamics CRM App With Azure for OAuth 2.0 Authentication

In this blog, I am going to take you through step step process of registering dynamics CRM application with azure.

Why do we even need to do that?

well, If you ever need to use Dynamics CRM OAuth authentication method to be able to connect to dynamics crm using Web API, you are going to need this. follow below steps:

  1. Login to  Azure Portal  ( Use the same credentials as your dynamics crm, if it asks you to sign up and setup trial, you can do that)
  2. Once you have logged in, Navigate to the option “Azure Active Directory” and click on “App registration:

  3. Click on “New application registration”

  4. Add the name of the application and select the Application type as “Native”:

  5. In the URL field enter the URL using which you need to obtain the OAuth authentication token in response to the request from that URL ( In my case I am going to use a POSTMAN call back url : https://www.getpostman.com/oauth2/callback ) > click Create:

  6. It will take some and create the application for you ( Note down the Application ID , you would need it when connecting to dynamics crm using OAuth):

  7. Click on the Settings from the application created and then on Required Permissions:

  8. Now Click on add new:

  9. Then click on Select API:

  10. Select Dynamics CRM Online from Drop Down and click on select:

  11. It will move to the next step “Select Permissions“, select the “Access Dynamics CRM as organization users” option and click on Select again.
  12. Click on Done:
  13. It will take some time and add the required permissions:

    And this is it! the setup is completed , now you can use this app’s Application ID as a Client ID in your application using which you need to connect to dynamics CRM using OAuth such as POSTMAN, SOAP etc.

    I hope this helps!

Create Auto-Number Attribute In Dynamics CRM 365 Using Organization Service + Simple Console Application

With the Dynamics 365 v9, you can add an auto-number attribute for any entity. Currently, you can add the attribute programmatically. There is no user interface to add this type of attribute.

There are actually two ways of doing this one is using c# code which you can use a console application and other being Web API request.

In  this blog, I will cover the 1st one, and by default this blog will also help you in connecting dynamics CRM 365 with console application.

Create a simple console application


  1. Open Visual Studio and click on new project and select console application project type and give it a name as “AutoNumber” and click on OK.

  2. From your solution manager , right click on “References” and click on “Manager nuget package”:

  3. In the search box enter the name as “Microsoft.CrmSdk.CoreAssemblies” , when result comes > select an click on install. It will install the dynamics crm core assemblies reference needed in the application.

  4. Now from your solution explorer click on add references and again select “System.Configuration” , “System.ServiceModel“and “System.Runtime.Serialization assmeblies“.

  5. Use below namespaces:
    using Microsoft.Xrm.Sdk;
    using Microsoft.Xrm.Sdk.Client;
    using Microsoft.Crm.Sdk.Messages;
    using System.Configuration;
    using System.Net;
    using System.ServiceModel.Description;
    using Microsoft.Xrm.Sdk.Messages;
    using Microsoft.Xrm.Sdk.Metadata;
  6. Copy paste below code in the application:
 IOrganizationService organizationService = null;

                ClientCredentials clientCredentials = new ClientCredentials();
                clientCredentials.UserName.UserName = ConfigurationManager.AppSettings["Username"];
                clientCredentials.UserName.Password = ConfigurationManager.AppSettings["Password"];

                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
                organizationService = (IOrganizationService)new OrganizationServiceProxy(new Uri(ConfigurationManager.AppSettings["CRMUrl"]),
                 null, clientCredentials, null);

                if (organizationService != null)
                    Guid userid = ((WhoAmIResponse)organizationService.Execute(new WhoAmIRequest())).UserId;

                    if (userid != Guid.Empty)
                        Console.WriteLine("Connected to dynamics crm");

                        CreateAttributeRequest widgetSerialNumberAttributeRequest = new CreateAttributeRequest
                            EntityName = "new_autonumber",
                            Attribute = new StringAttributeMetadata
                                //Define the format of the attribute
                                AutoNumberFormat = "DPR-{SEQNUM:5}-{RANDSTRING:6}-{DATETIMEUTC:yyyyMMddhhmmss}",
                                LogicalName = "new_serialnumber",
                                SchemaName = "new_SerialNumber",
                                RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),
                                MaxLength = 100, // The MaxLength defined for the string attribute must be greater than the length of the AutoNumberFormat value, that is, it should be able to fit in the generated value.
                                DisplayName = new Label("Serial Number", 1033),
                                Description = new Label("Serial Number of the widget.", 1033)
                        Console.WriteLine("Created the autonumber attribute successfully..");
                    Console.WriteLine("Failed to Established Connection!!!");
            catch (Exception ex)
                Console.WriteLine("Exception caught - " + ex.Message);


        7.  In the code above:

            A. change the entitylogical to the name of the entity where you want to create an autonumber field.  
            B. Give the required logical name of the attribute(which you would like to create).
            C. notice the  code line —-   

AutoNumberFormat = "DPR-{SEQNUM:5}-{RANDSTRING:6}-{DATETIMEUTC:yyyyMMddhhmmss}" 

         In the code above you can actually define what should be the format of your auto number as in example below : 

( Taken from docs.microsoft here : AutoNumber  Format Options)
     8. Now in your app.config put below( Insert the correct organization URL , username , password):

<?xml version="1.0" encoding="utf-8"?>
<add key="CRMUrl" value="https://organame.api.crm8.dynamics.com/XRMServices/2011/Organization.svc" />
<add key="Username" value="Username" />
<add key="Password" value="Password" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>

     9.  Build your console application( right click on solution and click “Build Solution” and then Run(Start) it:

    10. If it gets excuted fine , go to your dynamics CRM and open the entity fields from Settings > customizations > customize the system > entityname> fields. You will notice the field is created:

   11. Customize the form and add this field to the form post which try to create a record in dynamics crm. I have create two records and could see below:



     12. Note that you can always update this attrubute if it is created incorrectly by using code given here and using the same application we created :  Update AutoNumber attribute

We can utilize this feature very well for creating an autonumber field in crm. before this we needed created a plugin which will trigger everytime or a workflow with very complex configuration.

Transaction handling:

“SEQNUM” which is The sequential segment is generated by SQL and hence uniqueness is guaranteed by SQL.

In my next blog – we will create an auto number field with more simpler approach of Web API request.


White Paper – Migrate Microsoft Dynamics CRM 2016 On-Premises to CRM 365 Online v9

This consists of steps/considerations for upgrading dynamics CRM 2016 On-Premises v8.1/8.2 to Dynamics CRM 365 Online v9

I would like to thank Ravi Kashyap for helping me validate the process and Andrew Butenko for his nice blog.

A typical migration process should consist of below steps:

  • First things first – Decide the Dynamics CRM 365 Online Customer Engagement Plan
  • Validate your client side & server side code 
  • Backup your existing Data & Customization (Optional)
  • Deploy Customizations to Dynamics CRM Online Instance
  • Active Directory Synchronization
  • Migrate your data
  • Fix JavaScript & Plugins
  • Validate Sitemap
  • Reporting Options in Dynamics CRM Online 365
  • Test,Test & Test Again
  • Copy Instance

1. Decide the Dynamics CRM 365 Online Customer Engagement Plan

Microsoft offers variety of subscriptions based on the functionality required by the business. Now it can be very confusing in terms of costing. There is a tool available which can be used to estimate your costing of Dynamics CRM online implementation: http://www.infostrat.com/dynamics-365-cost-calculator

However, the Microsoft Pricing page the details are also pretty neat to understand : https://dynamics.microsoft.com/en-in/pricing/

Microsoft Fast Track Program for Online implementation

This is a special assistance provided by Microsoft for the business who are planning for dynamics CRM Online Implementation and purchasing 250+ license where in Microsoft will take care of the migration of Customization + Data for your CRM. Which literally takes all your headache away!
read more about it here : https://www.microsoft.com/en-us/fasttrack/dynamics-365


2.Validate your client side & server side code

though your code or script in 8.1 should work in Dynamics CRM Online 9.0, it is recommended that these should be updated to use the latest API. For example Page is deprecated in v9, however deprecation doesn’t mean it will stop working right away, it just means that Microsoft has a plan to vanish it in coming updates/releases.

Now there is a very nice tool available which helps to validate your JavaScript by running in your dynamics crm. This XrmToolBox (details here)plugin will scan your environment and Validates your JavaScript Webresources if they are compatible with Dynamics CRM 365 V9. It will tell which method needs to be replaced with what method. More details can be found here : https://www.powerobjects.com/2018/09/17/upgrade-deprecated-client-apis-dynamics-365-v9/


Note down all the issues , even you can start fixing these in the background. Another point to note is Odata should not at all be used to for any CRUD operation in your system and must be replace by Web API.

Now if we talk about server side code/plugins there is not much difference – the only thing  to be done is to use the latest SDK assemblies version 9, all the latest CRM SDK assemblies are available on the nuget store and should be replace otherwise plugins will not be able to run and communicate with your dynamics CRM. Apart from it the solution must be update to use .net framework 4.5.2 minimum.


3.Backup your existing data & customization

This step is optional and can be skipped.

This step requires a simple backup of your database of Dynamics CRM Organizaton & keeping them in some place.

Step 1: Open SQL Server and Expand Databases. Right Click on required Organization(*****_MSCRM)  to take Backup and Go to Tasks -> Back Up…
Step 2: Would like to provide the new Destination Backup Path.
Step 3: Select path and provide File Name and click on OK.
Step 4: Click on OK to start backup.

4.Deploy Customizations to Dynamics CRM Online Instance

This is probably the most important step, if you are able to perform this without any hiccups; you have done most of the upgrade work.

Its time you export all customizations from your On-Premise environment. Now do not export default solution/customization from your On-Premise environment, rather create a custom solution and add all your customization in the solution. As Microsoft Dynamics CRM Online doesn’t support default customization import.

Once solution has been exported, open your dynamics CRM Online instance and import the solution.

Generally solution to v9.0 from v8.1 can be imported without any issues. But if any errors come, the real time troubleshooting should be done as it’s unpredictable. So, BE READY FOR MULTIPLE TRY/FAULT ATTEMPTS.  If things doesn’t go well , I would suggest to break down the components and then deploy :

      ●  WebResources & OptionSets
      Custom Entities + Dependencies on Standard Entities (like custom view of standard entity used in the subgrid of custom entity form)
        Standard Entities
        Security Roles
        Dashboards & Reports
        Processes & Plugins & Custom Workflow Assemblies
        SiteMap & Application Ribbon

Apart from it Connection Roles, Templates, Field Security Profiles e.t.c can be separated too to avoid “missing dependency error”.

5.Active Directory Synchronization

Transition to dynamics crm online can be really weird and new for the users but doing AD synchronization can definitely comfort them to some extent. If you have a large organization that uses Active Directory to manage your users and groups, setting up Active Directory synchronization will allow you to manage all of your CRM Online users in a central location, avoiding the need to manage multiple user accounts and passwords. In the Office 365 portal, each user record automatically includes user details such as phone number, which is populated from the corresponding user entry in Active Directory. After you assign a CRM license to a user in the Office 365 portal, the user (and all associated details) will appear within the CRM application. If the user’s name or other information is updated in Active Directory, any changes will automatically propagate to CRM.


Here are few links to enable this:



6.Migrate your data

Migration of the data is another important aspect of an upgrade after customization.
There multiple options available such as custom .net code( console application) , Scribe, SSIS along with Dynamics CRM Adapters provided. Based on the volume of data, option can be selected.

Kingsway has a “Starter Package” that can be used a foundation to the migration of data from CRM to CRM.


you can combine Scribe with SSIS for other options such as migrating users. Where in you can get users using SQL query and then create them in dynamics crm online using API. ( we will talk about synchronization of Active Directory with dynamics crm online to be able to let users  use existing logins and email addresses).


7.Fix JavaScript & Plugins

Now that you have your customizations and Data in your dynamics CRM instance, Its time to go back to step 2 – Validate client and server side code.
We have discussed briefly there approach of fixing JavaScript and plugin code as what needs to be done.


8.Validate Sitemap

Now that you have moved your customizations, you might see weird changes on your dynamics CRM online sitemap.

Few ways to fix your sitemap and design your way again.

Using the build in SiteMap designer in dynamics CRM 365 online : https://www.inogic.com/blog/2018/01/inline-editing-for-sitemap-components-in-dynamics-365-v9-0/

Using SiteMap Editor tool from XRMToolbox: https://www.xrmtoolbox.com/plugins/MsCrmTools.SiteMapEditor/

Manually making changes to sitemap customization xml.


9.Reporting Options in Dynamics CRM Online 365

this is also one of the important aspect of dynamics CRM migration. Since you are moving Online/Cloud, your SQL based SSRS reports will not work. As Dynamics CRM 365 Online doesn’t support SQL based reports.

Hence you might want to consider changing each and every report, however changing them is not option here and also not a straight forward process due to various limitations. You might want to explore other reporting options:

● SSRS fetch XML based report – you can very well create fetch XML based reports. It’s very similar to how you create SQL reports and are fully compatible with dynamics CRM 365 Online.

Power BI – lets you create rich, interactive reports and real-time visualizations in Dynamics 365 for Customer Engagement with Power BI dashboards and tiles that you add to your personal dashboards.

See more:

Excel Templates – Excel provides powerful ways to analyze and present your Dynamics 365 for Customer Engagement data. With Excel templates, you can easily create and share your customized analysis with others in your organization.

See more: https://docs.microsoft.com/en-us/dynamics365/customer-engagement/admin/analyze-your-data-with-excel-templates



10.Test, Test & Test Again..

You probably had rough days going through the migration process but its not the end until unless you are not fully confident, to gain confidence, you would need a team of testers who can test each and every functionality thoroughly.

While you are on migration – let people create test scripts for each functionality, get them approved by an expert and make sure they touch each and every component of your dynamics CRM.

Create a powerful regression suite – that takes you through end to end huge functionalities i.e. a quote and buy process, lead to invoice process etc.

Don’t hesitate in taking a testing expert with automation experience who can speed up things.
Remember the more you test, the more you gain confidence.


11.Copy Instance

once you have verified and everything looks fine – you would probably want one more instance such as a Dev or UAT environment. You can do that within your subscription.
You have two options while copying this instance Dynamics CRM Online:

● Full copy – A full copy includes all application data, users, and customizations from the source instance.
Minimal Copy – A Minimal copy only includes users, customizations, and schema from the source instance.

Read More : https://docs.microsoft.com/en-us/dynamics365/customer-engagement/admin/copy-instance


I hope this helps! 

                                  ****ALL THE VERY BEST****


This is the 10th blog of this series, before this I have created last blog from module 2 on the topic “Manage incidents”  which you can check here: MB2-877 MICROSOFT DYNAMICS 365 FOR FIELD SERVICE MODULE 2 TOPIC – MANAGE INCIDENTS

In this blog we are starting with the first topic – Manage Scheduling options from module 3 “Scheduling and dispatch work orders”

  1. Describe options for scheduling work orders including the Schedule Board and Schedule Assistant & Determine when to use each scheduling optionOnce you have a work order, you need to schedule it in order for the field work. There are three ways of doing it:
    ⦿ Schedule Board
    ⦿ Schedule Assistant
    ⦿ Resource Scheduling Optimization

    Schedule Board

    Schedule board provides a a brief and easy view on how many of your resource are allocated to how many work orders and if they have some more capacity.

    ⦿ Drag & drop interface for scheduling and rescheduling ( showed below in the image)
    ⦿ Filter by Resource Type, Services, etc.
    ⦿ Scheduler settings allow configuration of dispatcher time zone, grouping etc

    Scheduling Assistant

    Scheduling assistant really helps to find the right resource for your work order by allowing you to enter filters like Duration , Radius within which you need a resource , Start and End time , Territory , Resource type etc.

    To schedule a work order using scheduling assistant, go to a work order which needs scheduling and click on “Book” from the ribbon command bar and you will be presented below. Based on your criteria you get resource > select the resource and click on book.  A resource booking will be auto created:

    Resource Scheduling Optimization

    Resource Scheduling Optimization(RSO) is an add-on capability for the Dynamics 365 for Field Service application that enables you to automatically schedule work orders for the most appropriate resources, by optimizing bookings for the shortest travel time, available work hours, and many other constraints.

    Few important points about RSO:

    ⦿ Add-on service used for optimizing schedules based on defined optimization profiles
    ⦿ Requires a valid production instance of Field Service
    ⦿ Licensed per resource you want to optimize
    ⦿ Used to optimize any entity enabled for use with the schedule board.
    ⦿ Optimization is based on profiles that define what you want to optimize and how you want to optimize it

    Example: Optimize currently scheduled items for the next three hours to minimize travel time.

    Here it is very nicely explained by microsoft how you can start using it and configure it your way : Overview of the Resource Scheduling Optimization (RSO) solution

  2. Describe stages of the scheduling process and steps that occur during each stage

    A typical work order scheduling process consist of three stages:

    A. Work Order Creation

    ⦿ Identifies the Service & Billing Accounts
    ⦿ Defines the type of Work Order
    ⦿ Indicates the Tasks, Products, Services, Skills, etc. needed
    ⦿ Includes Price List and Tax information
    ⦿ Preferences for service delivery can be defined

    B. Resource Requirement Definition

    ⦿ Pulls the customer and required duration from the Work Order
    ⦿ Pulls in any preferences for delivery such as time and date windows, as well as any resource preferences
    ⦿ Indicates any additional relevant scheduling information such as skills, territories, etc.
    ⦿ Created automatically when a Work Order is created
    ⦿ Requirement records are used by scheduling features to locate, assign, and schedule specific resources

    C. Resource Booking

    ⦿ Once a resourse who meets the necessary requirements is identified and scheduled a Resource Booking record is auto created
    ⦿ Defines who is responsible for completing the Work Order
    ⦿ Contains time and status information including estimated and actual Travel information such as miles and durations can be populated
    ⦿ Booking statuses are updated as technicians update information from the mobile application

    That’s it for this blog – I will see you in the next blog where we will cover the next  topic “Implement the Schedule Board”


This is the 9th blog of this series, before this I have created a blog from module 2 on the topic Create and manage work orders  which you can check here :MB2-877 MICROSOFT DYNAMICS 365 FOR FIELD SERVICE MODULE 2 TOPIC – CREATE AND MANAGE WORK ORDERS

In this blog we are going to cover the last topic  “Manage incidents” from module 2:

  1. Describe incident types and incident type fields

    Incident Types are a great addition to field service, they can be utilized to group together similar types of work orders or the ones which you get frequently. By creating an incident type you can save a alot time creating a work order as they can act as a template.

    when associated with a work order they auto-populate products, services, characteristics , estimated duration etc.

    Below are typical fields captured on an incident type:   

        A. Default Work Order Type
        B. Skill / Characteristics
        C.Tasks to be performed (including duration)
        D.Required Products

        E.Required Services

  2. Create and configure incident types 

    To create an incident type, Navigate from Field Service > Field Service Settings > Incident Types:

    Click on add new and enter details such as incident type name and if you look into other tab you will option to associate a default work order type , estimate duration , product & services , characteristics etc.:

    Later you can associate this incident type to a work order which adds all options added in the incident type to the work order by creating an incident on the work order containing this as as a incident type.

  3. Add service tasks
    Service tasks makes easier for you to break down the incidents into smaller parts for example in an incident “Training” you can multiple service tasks such as “Sales Training” which might take 2 hours then you have “Marketing Training” which might take 3 hours. You have  these options available on a incident type as “service tasks”.

      A. Tasks performed by agents at a service location
      B. Check-lists for agent to follow a specific process
      C. Durations can be assigned which rolls up to the Work Order duration 

    To define service tasks for an incident type – go from field service > field service settings > incident types and open an incident type > click on Service task tab  and click on add new service task > :

    you have to capture details such as Name , Estimated Duration , Line order ( order by which the process to be followed , i.e if this service needs to be performed first say “1”).
    Apart from it you have to associate this to a “task type” that again a further categorisation of the service task – you can create a one with the same name and add it here.

    I hope I am doing well with these blogs.  by now I am very much confident that I and the people who will follow these blogs will be able to clear the certification.

    So that’s it i will see in the module 3 now “Schedule and dispatch work orders”.


MB2-877 MICROSOFT DYNAMICS 365 FOR FIELD SERVICE MODULE 2 TOPIC – Create and manage work orders

This is the 8th blog of this series, before this I have created last blog from module 2 on the topic “Describe the work order lifecycle”  which you can check here :MB2-877 MICROSOFT DYNAMICS 365 FOR FIELD SERVICE MODULE 2 TOPIC – DESCRIBE THE WORK ORDER LIFECYCLE

In this blog we are going to cover the second topic  “Create and manage work orders” from module 2:

  1. Create work order from an incident

    We have already learned that a work order can be added from a case or an opportunity. To add a work order from case, go from Field Service > Field Service > Case:

    select an existing case or create a new one and click on tab “Related” > Work order :

    Then click on “Add new work order” . A side screen will open, fill out the details and click on save & close:


  2. Add status and substatus information to a work order

    There are system predefined statuses are available that you can associate with a work which are as below:

    now these system statuses can have sub-statuses associated with them.
    for i.e under open – scheduled you can have ” waiting for the manager approval” or ” resource not available at the moment” etc.

    Now when you add a sub status and save a work order – it is clearly visible in the footer out of the box:


  3. Configure work order type and priority

         A. Work Order Type

    Work Order Type is an option of categorization of work orders such as “Maintenance” , “Repair”, “Training” etc.

    To define a work order go from field service > field service settings > work order types and click on new :

    Add required field such as incident required , associate a price list :
    The main point here is when you add this work order type to a work order , the price list you add here , that gets added by default on the work order:

    Then you can associate this with a work order and notice when you do that the price list associated on work order type gets added to the work and becomes a default price list , however you have option to overwrite it.

        B. Priorities

    Priority records let you prioritize your work orders. You can also assign each priority value a custom color, which will display in the outline of the resource booking time slot on the schedule board. This allows dispatchers to visually distinguish a job’s priority while managing the schedule.

    To create priorities for your field service work orders , go from field service >  Resource Scheduling and click on Priorities :

    click on  add new priority and give it a name and select level of important select 1 for the top priority and 2,3,4… for the lower ones subsequently :

    Late this can be assigned to work order on the work order setting tab:

    this can be seen on the scheduled board with colour representing the priority, in below the green colour represents the priority of the work order :

  4. Organize work orders and resource by geography

    A Service territory  helps Organize Work Orders and resources by geographical area. 
    In this blog here : Configure Additional Options ,  I have followed an approach to create a territory and assigned that to a resource , you can also associate this territory to a work order’s Settings tab :

    Which then can easily be located on the map view by adding the territory filter:


  5. Describe the process for closing work orders & Close a work order

    When you moved through business process of a work order – when work order is completed, the status is set to Open – Completed however that doesn’t mean that a work order is literally completed in crm. There may be some approvals/information required etc before accomplishing the definition of done.
    Finally when everything is done – the status should be changed to “Closed -Posted” which signifies that a work is completed.

    There may be additional Settings that you can do around these settings under field service administration such as what should be the default status when a work order is completed or when an invoice should be created etc.

    That’s it for this blog – i will see in you the last blog “Manage incidents” of module 2 “Manage Work Orders”.

MB2-877 MICROSOFT DYNAMICS 365 FOR FIELD SERVICE MODULE 2 TOPIC – Describe the work order lifecycle

This is the 7th blog of this series, before this I have created last blog from module 1 on the topic “Integrate other tools with Field Service”  which you can check here :MB2-877 MICROSOFT DYNAMICS 365 FOR FIELD SERVICE MODULE 1 TOPIC – INTEGRATE OTHER TOOLS WITH FIELD SERVICE

In this blog we are staring with the module 2  “Manage Work Orders” which is 15-20% content of the exam. The first topic is “Describe the work order lifecycle” :


  1. Describe work order fields

    A work order in Dynamics 365 for Field Service has information on what work needs to be done. It is used to coordinate and schedule resources and activities. It can be used for different types of work, such as installations, repairs, or preventive maintenance.

    A work order is usually created from a case or opportunity. It is then scheduled either manually or using the schedule assistant and then dispatched. Once the work is complete, it is reviewed and approved by a manager.

    When you are creating a work order you will have to capture main important below information :
         A. Description of the issue/ work order to be performed
         B. Customer/Account
         C. Location
         D. Products/Services that are required
         E. Tasks or steps to follow
         F. Priority & Estimated time to complete
         G. Skills/Characteristics needed

    this is how a typical work order looks like in Dynamics CRM 365 UI :

  2. Describe work order life cycle stages &  3.Identify booking status and work order status values for work order stages

    A work order in Dynamics 365 for Field Service more or less goes through upto 5 stages. They may vary based on the type of service the company provides:

    What happens in each of these stages is very nicely mentioned on docs.microsoft here : Work Order LifeCycle  with categories as below:

        A. What happens in each stage
        B. Who performs the task in each stage
        C. Work order status in each stage
        D. Work order schedule status in each stage

  3. Describe uses and capabilities for billing accounts, service accounts and sub-accounts

    A service account in Dynamics 365 for Field Service is an account for which a work order is created or requires the service. 

    On the other hand a billing account is the account which will pay for the services.

    let’s have a look on a work order:

    Point to note is : if there is no billing account is associated with the order ; by default service account becomes the payer.

    if you navigate to field service >  Accounts > open an account and open the field service tab you will see below:

    You have option define some field service related information on this account. we will focus on the field “Billing Account”.
      A. if these is not filled , the service account will be the billing account on the work order by deafult.
     B. you can define here who needs to pay the bill such as other organization or account.
     C. All future billing for the current account will be billed to the associated account here.  

    So that’s it for this blog and i will see in the next blog with the MODULE 2 TOPIC – Create and manage work orders

How To Access Master & Duplicate Record In Merge Operation Plugin

Here is a quick blog on how to access master & child records during a Merge operation in a plugin.

I recently had to develop a plugin where in I needed to do some manipulation with the records being merged.

You can access three entities in your plugin when a record is merged from Context.InputParameter : 

       1. SubordinateId – the duplicate record
       2. Target – the master record
       3. UpdateContent   – a temp entity contains the final attribute as outcome of the merge operation.

To Access them in the code simply do this:

Entity duplicate = context.InputParameters[“SubordinateId“]; // To access the duplicate record simply retrieve the attributes using service.retrieve and by proving the duplicate.Id.

target= (EntityReference)context.InputParameters[“Target“];

finalRecord = context.InputParameters[“UpdateContent“]; //To access the final record simply retrieve the attributes using service.retrieve and by proving the finalRecord.Id.

I hope it makes sense: