FieldOne Basics

After completing the FieldOne Certification, I tried to list done some important terms and features of FieldOne and how they relate to standard CRM service module entities. As built on top of Dynamics CRM, it uses all the powers of Dynamics CRM with an addition to FieldOne services like Schedule Board, Mobile app, resource pay and advance scheduling algorithm.

The list is more of a quick guide to understand or revise the terms. See FieldOne learning material and other blogs (listed below) for detailed information on each term. Feel free to add more information or correct me in comments section below.

FieldOne Users

  1. Dispatcher
  • FieldOne user who manages work order creation and scheduling.
  • Usually manages work orders using FieldOne web client from Dynamics CRM.
  • Notifies and dispatches a field agent for a particular work order.
  1. Field Agent
  • Field agents are users who visits customer location to provide services.
  • Uses FieldOne mobile application to get notified about work order assignment, work on work order, change status of work order, driving direction, etc.
  1. Manager
  • FieldOne users who analysis data by making use of reports, dashboards, etc.
  • All standard features of Dynamics CRM applicable to reports and dashboard like export to excel.

Important Terms

  • Work Orders
    • Consist of description of the issue or work to be performed, customer information, check list of steps to be followed for completing the work order, location, etc.
    • These are related to a service accounts and not billing account. A customer can have one billing address and multiple service accounts.
    • A particular work order goes through various stages before it is closed. These stages are Create, Scheduled, Dispatched, Serviced, Review / Approval, Invoiced & Inventory adjusted.
    • Work orders can be created manually into CRM or automatically from Case, Order or agreement.
  • Schedule Board
    • Power full tool that helps Dispatcher to schedule work orders and assign resources based on availability, territory, skill set, etc.
    • Shows list of work orders as well as map.
    • Allows rescheduling, updating status and reassigning of work order.
    • Dispatcher can make use of various filters to find right resource to assign to a work order.
  • Skill Types
    • Used to document skills
    • These can be associated with resources and incidents.
    • A resource can be selected for a particular work order based on skills possessed by the resource.
    • Skills related to incidents can be helpful to find right resource who can fulfil incident needs.
  • Accounts
    • Accounts are customers.
    • A customer can have one billing address and multiple service locations.
    • Based on above point, customers are divided in two types as:
      • Service Account
        • These are locations where service is to be provided.
        • Service accounts can be used as billing address too.
      • Billing Account
        • These are locations used for billing.
        • E.g. Head office of a customer.
  • Price Lists
    • Same functionality as CRM price list.
  • Security Roles & FLS
    • Uses standard CRM security roles and Field security profiles.
    • Few OOB security roles specific to field one are (all prefixed with Field Service):
      • Administrator
      • Dispatcher
      • Inventory Purchase
      • Resource
  • Territories
    • Defines service areas.
    • Zip codes are assigned to territories.
    • Resources with similar zip code fall under relevant territory.
    • Work orders are auto assigned to territories based on zip codes.
  • Resources
    • These are users, crews, service center, etc.
    • Resources can be configured to have work hours, time offs, etc. similar to user in CRM.
    • Resources can be paid based on their time tracked for a particular work order and their status like Working hour, overtime, Travel, Break, Business closure, etc.
  • Customer Equipment
    • These are products owned by customers and serviced by field agents.
  • Agreements
    • These are similar to contracts.
    • Agreements can be used to auto create work order and invoices

Important features

  • Scheduling
  1. Manual Scheduling
    1. By using drag and drop of work orders from Work Order list or Map available on Schedule Board.
  2. Scheduling Assistant
  3. Auto Routing Scheduling
  • Sky Mobile App

Additional resource:

https://neilparkhurst.com/2015/12/12/fieldone-sky-work-order-theory/

http://terra.fieldone.com/support/terra/support-faq

http://www.fieldone.com/mobile

https://community.dynamics.com/crm/b/crmandunifiedservicedesk/archive/2015/12/19/fieldone-sky-creating-work-orders

Voice of Customer available for CRM 2016 Update 1 Online

As mentioned in CRM Team Blog, Voice of the Customer surveys is now a feature in Microsoft Dynamics CRM Online 2016 Update 0.1 and out of preview. Using which you can create surveys to capture feedback regarding your product or service from CRM. Recipient can take the survey on any web enabled device and the response is logged into CRM. This captured data can be utilized for generating reports, analyzing trends and making appropriate changes to your product/service. More information on the product is available here.

Enable CRM tenant for Voice of Customer

Though late as my CRM online tenant was set up in APAC region, yesterday my org was provided with an option to install two new solutions, Voice of Customer and Fantasy Sales team. To use these features, your O365 admin should install and enable these solution for the organization. Details for doing it are available here.

Once the solution is installed and displayed on your O365 page, you can navigate to your CRM 2016 tenant.

Configure Voice of Customer

Successful installation of the solution will add new tab to the ribbon named “Voice of Customer” which contains all related entities.

Before you can start using the service, you are required to enable it.

For enabling it, navigate to Settings à Solutions à Voice of Customer solution.

Select the agreement check box and click “Enable Voice of the Customer” button.

Once this is done, you are ready to start using the feature.

The configuration page of solution also provides you a link to Configuration Entity for VoC.

This configuration entity consists of details like default email template, Organization Id, Content Delivery Network path, etc.

Creating a new Survey

To create a survey, navigate to Voice of the Customer à Surveys and create a new record.

On the New Survey page, we have 3 options

  1. Survey: This page has all configuration related data for the survey like Survey Appearance (Theme, Logo, Redirect URL, Redirect Text, and Header Text), Invitations and Actions, Feedback, etc.

  2. Designer: This page allows us to create the UI for the survey. It provides options to add pages, questions, ratings, etc.

  3. Dashboard: Here we can see the details regarding the response obtained for the feedback.

Once a survey is created, you can preview it from the Survey page itself before publishing it.

No feedback data of the preview will be stored in CRM.

Creating a Survey Activity

** We are creating this manually but I’m sure we should be able to automate it using processes too.

A survey activity can be created from most of the entities in CRM like Contact, Account, Case, etc. We will be creating one form Contact.

Navigate to Contact and open a record for which we want a survey. In the related records, select Survey Activity and “Add New Survey Activity”.

Set the activity details like Regarding, To, Survey, etc. Once saved this will generate the survey invitation Link that can be sent to users for providing feedback.

Executing/providing the feedback

End users can provide feedback simply by clicking the feedback link provided to them. Below is the sample feedback that I created for capturing the session feedback (one of the hobby project I’m working onJ)

Page 1

Page 2

Page 3

Tracking the Survey Response

Survey response can be tracked from related Survey Response for Survey Activity.

I’m still exploring the feature more. Please comment if you have anything to share on same.

Connecting CRM 2016 to Power Query in Excel 2013 with updated Odata feed

In my previous posts we had discussed about how we can connect Dynamics CRM with Power Bi and Power Query. But with the introduction of API in CRM 2016, there is slight change in the OData feed URL generated for CRM 2016.

Using the same process mentioned in older posts but making use of this new OData feed URL, we can achieve same results for CRM 2016 as well.

The url format is [Your Organization Root URL]/XRMServices/2011/OrganizationData.svc.

e.g.: https://u———–y.api.crm5.dynamics.com/XRMServices/2011/OrganizationData.svc

OnLoad event for SubGrid in CRM 2015 Update 1

Till CRM 2011 we used to use Xrm.page.getControl(“grid”) to get a grid control available on form and perform any runtime activity like changing the view/query, etc. Also we were required to write the complete script on OnLoad even of form and add a timeout till the subgrid is loaded as subgrids are loaded asynchronously after the form is loaded. There was no way we can have a trigger on load of a subgrid till CRM 2015 Update 1. What we used to do is explained in older post here.

But with CRM 2015 update 1, we now have an option to execute scripts when data is loaded in subgrids. Because of which we are not required to have any timeout added in the script and iterate it till the data is loaded into subgrid.

With addition on GridControl.addOnLoad method, we can now add event handler for OnLoad event of subgrid which is more reliable than the form OnLoad event for form with a timeout. This event will get triggered whenever data is bound to a subgrid.

The steps to add this event is not similar to adding a form OnLoad event (from form customization popup), the way to add it is by invoking it using a code from other events (e.g. form OnLoad) by making use of GridControl.addOnLoad method. Similarly, use GridControl.removeOnLoad to remove event handlers.

Xrm.Page.getControl(“Contacts”).addOnLoad(myContactsGridOnloadFunction);

References:

https://msdn.microsoft.com/en-us/library/dn932137.aspx?f=255&MSPPError=-2147217396

https://msdn.microsoft.com/en-us/library/dn932126.aspx#BKMK_subgridAddOnLoad

https://crmcooking.wordpress.com/2015/07/15/writing-scripts-for-subgrids-with-crm-2015-update-1/

Solution Segmentation in CRM 2016: Add selected entity assets to solution

With the launch of Microsoft Dynamics CRM 2016, out of many important features added one is Solution Segmentation and Patches.

With solution segmentation we can now export solutions with selected entity assets (fields, forms, views, etc.) rather than entire entities with all the assets.

This helps a lot as previously if we were required to deploy a single new view created for an entity, we were required to deploy and publish the complete entity. This used to end up deploying some under development depended components too. The feature is most importantly useful in applying patches.

This feature allows granular control of the solution package without changing any XML. This will make ALM and Deployments much smoother.

Also by making use of the API aspect, we can try to automate build and deployment process.

Supported entity assets that can be selected for a entity are:

  1. Forms
  2. Views
  3. Charts
  4. Fields
  5. Keys
  6. Relationships (1:N, N:1, N:N)
  7. Messages
  8. Business Rules
  9. Hierarchy Settings
  10. Dashboards

Follow TechNet articles for more information on Use segmented solutions and patches to simplify solution updates

Migrating data to a live on-premises CRM system?

While working on one of the project, we were required to move data from legacy system into a live production system with limited amount of black out window. One can calculate the time required based on number of records, server configuration, etc. and can even have a buffer. But you never know when Murphy will play his role.

Below are few points that, if considered can help Murphy stick to its seat and don’t show up. (Just some pre-checks that helps the processJ)

  • Confirm disk space on SQL, web and application server. Have some buffer space as logs will grow.
  • As your target system is a live production system, surly there will be some scheduled maintenance jobs running to maintain server health as part of disaster management. These jobs are life savers but problem with them is that these are scheduled in down time as they consume high resources. And unfortunately this is the only time when we can perform our import. Thus you may have to consider pausing the maintenance jobs. But do remember to turn them on once done with the import. Some of the resource consuming jobs are: consistency check, database backup, async-operation cleanup, POA, etc. Pausing this job helps the import utilize maximum available server resources.
  • Check the database log size and clear. The log will grow with the import and if it reaches the maximum available threshold the import processes throws timeout errors. Also check the shrink process, preferred if simple.
  • Check for CPU and Memory usage on SQL, web and application server.
  • Check for any blockage on SQL server, if any script is blocking or slow running queries.
  • Clear AsyncOperationBase table.
  • You may run into scenario where it is required to restart the SQL service. Make sure that this do not affect any other process. Also in case of NLB, upon restarting the SQL service switches the active node. Thus you will also have to consider that node for performance check.
  • You may have to disable the user logging and turn off the workflows and plugins.

And last but not the least is FULL database backup before start of the process. Also you make to do this in several passes due to amount of data and limited amount of down time. Identity the steps that can be performed outside black out that do not affect live system. This provides some extra time for completing the critical steps.

I would recommend to do the import in multiple small passes which helps in keeping the buffer and reduces the chances of breaking things or running on edges. After all “Rome was not built in a day”.

These are some of the steps that helped me. As always, these may not match exactly to your requirement but some of them will surly. And I don’t guaranty of anything from the steps as risk will be yours as it’s your production system.

If you have anything to add, please write in comment and I will update the content. Thanks!

DID YOU KNOW? Potential issues with CRM due to SQL server replication

I’m not an expert in SQL Server and related stuff like replication but recently faced an issue with simple solution deployment in CRM 2011.

Scenario:

I was trying to deploy an unmanaged solution consisting of Contact entity where I had created a new custom field. When I tried to import the solution, the solution import used to fail without any specific error even in the downloaded log. All components used to process successfully with only Root Components status as unprocessed where the import used to fail.

Then I tried to create the field manually by customizing the entity. When I tried to create a new field, I used to get SQL Server error. The log here too had not much helpful information.

Cause:

These error messages occurs when SQL Replication is enabled for Microsoft Dynamics CRM databases and you attempt to insert into a text, ntext, or image column that is published in a replication article.

In this case, you get below error.

System.Data.SqlClient.SqlException (0x80131904): Length of LOB data (14349284) to be replicated exceeds configured maximum 65536.

Resolution:

Below article describes the resolution for it.

http://blogs.msdn.com/b/atif/archive/2012/02/28/length-of-lob-data-152644-to-be-replicated-exceeds-configured-maximum-65536.aspx

sp_configure
‘max text repl size’, 14349284

RECONFIGURE

GO

In few cases, above resolution didn’t worked for me. The only way that we could figure of was to import the solution by un-publishing the related replication articles and then publishing.

Configuration Migration tool for CRM 2015

Note: Contents re-blogged as it is from TechNet blog.

The Configuration Migration tool enables you to move configuration data across Microsoft Dynamics CRM instances and organizations.

The Configuration Migration tool allows you to:

  • Select the entities and fields from where you want to export the configuration data.
  • Avoid duplicate records on the target system by defining a uniqueness condition for each entity based on a combination of fields in the entity, which is used to compare against the values on the target system. If there are no matching values, a unique record is created on the target system. If a matching record is found, the record is updated on the target system. If no duplicate detection (uniqueness) condition is specified for an entity that is being exported, the tool uses the primary field name of the entity to compare against the existing data on the target system.
  • Disable plug-ins before exporting data and then re-enable them on the target system after the import is complete for all the entities or selected entities.
  • Validate the schema for the selected entities to be exported to ensure that all the required data/information is present.
  • Reuse an existing schema to export data from a source system.
  • Embed the exported modules created from this tool (schema and data files) in other programs. For example, you can use the exported data in Microsoft Dynamics CRM Package Deployer along with other solutions files and data to create and deploy packages on a CRM instance.
  • The Configuration Migration tool does not support filtering of records in an entity. By default, all the records in the selected entity will be exported.

The following diagram illustrates how the Configuration Migration tool is used for migrating configuration data.

i

DID YOU KNOW? What happens to Audit History on performing database level update?

062915_1445_DIDYOUKNOWW1.jpg

Note: This is all about UNSUPPORTED database level updates. These kind of updates are not recommended (unless you are left with no options).

Though any kind of database level updates are not recommended in CRM, there are scenarios where we are required to do so. I had one such requirement where I was required to perform a simple update (setting two options field value to Yes) for millions of records. Doing same using a supportive way (bulk update or bulk workflow execution) used to take days due to CRM service calls but same updates using SQL script was done in few hours.

I had auditing enabled for these records in CRM, but as this was unsupported db level update I was not expecting any help from audit history. What was expected form auditing was either of below:

  1. Change track as new update request in audit history. (If there is any kind of trigger return at db level to maintain auditing)
  2. No updates at all in audit history. (Assuming auditing are maintained by some kind of workflow/plugin that trigger at UI level)

Unfortunately, none of this happened and what happened was not at all audit friendly or expected. This is what happened:

The change made by SQL script was tracked at create event itself in audit history. But only the field value change was tracked and not the change date/time. The change date/time was still showing when the record was created.

Though these kind of changes are not recommended, but I still feel that in some cases these are required and this behavior of auditing will affect the consistency. I feel that things should be either completely baked or not baked at all than having them half baked. But again this is only what I feel. J

Example:

  1. I created a Contact record on 7/6/2015 at 11:52 AM with ‘First R~~~~~ Created’ set to ‘No’. Audit history shows something like below.

     

  2. Now on 7/6/2015 at 12:00 Noon, I update the value for ‘First R~~~~~ created’ to ‘Yes’ using a database level update script. Ideally there should have been a new entry made in audit log to track this change and there should be no change made to existing audit history records. But CRM updates the changed value in create event itself without even tracking the change time.

 

Hope this helps and thanks if you have come all the way down here reading the article.