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

Advertisements

What’s new? Feedback and ratings on entities

With Microsoft Dynamics CRM Online 2016 Update 1 and Microsoft Dynamics CRM 2016 Service Pack 1, we now have an option to track feedback and ratings from customer for records in CRM with the click of a check box.

  • A new option appears on general tab on an entity customization form called “Feedback” which once checked creates an 1:N relationship of that entity with feedback entity similar to activities.
  • Users can use this entity to enter their response.
  • Feedback entity itself is customizable.

You can enable feedback on entities to allow customers to write feedback or provide ratings for any entity record.

Scenario: Business wants to track feedback received from customers on the customer support experience. In this case you can enable feedback for the Case entity to receive feedback.

In case of multiple ratings against one particular record, with use of simple rollup field the ratings can be consolidated.

References

https://www.microsoft.com/en-US/dynamics/crm-customer-center/enable-an-entity-for-feedback.aspx

https://technet.microsoft.com/en-us/library/dn531078.aspx#BKMK_Feedback

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/

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.

DID YOU KNOW? Workflow process throws generic CRM error


Scenario

I have an OOB workflow process developed some time back and activated. Now when I try to open the process, I get generic CRM error (below image). Also the process status is changed to “Draft” automatically. There were no updates made to the process.

Cause

I have seen these issues frequently especially when working with Child Workflow Processes where I have a child workflow called from a Master workflow. If you have a Master workflow calling a child workflow and for some reason the child workflow is activated as “Process Template”, then user gets this error when they try to open the master workflow.

Conclusion

CRM throws generic exception and its status is changed to Draft if it linked/related to a “Process Template” instead of “Process”.

Note

Other common issue faced while working with workflow process is “Invalid Expression” error in “Condition Expression” step. This occurs if the field used in condition expression is either deleted from system or if Value is changed. Once you fix the field/value issue, all conditions in the process are automatically fixed.

DID YOU KNOW? Fields rarely touched in Dynamics CRM

We all know that whenever we create an entity in CRM, CRM creates few fields by default. Some of these like Owner, Owning Business Unit, Created On, Modified On, etc. are used extensively while working with Dynamics CRM. But there are some fields that we use very rarely or even never; thus we tend to forget about them. But some of these fields are really important and can save a lot custom work, it’s just that we should be aware of them.

Recently there was a question on Dynamics Community regarding use of same fields which inspired me to search for them and have it documented. Few fields can be understood from their name but some fields don’t even have proper description in CRM. For such fields, below table can help. Links against the fields has more explanation and scenarios where these can be used.

Field Name Description
CreatedBy User who created the record.
CreatedOn Date and time when the record was created.
CreatedOnBehalfBy To create records on behalf of another user.
Used for impersonation in CRM 2011
ExchangeRate When I create a record, such as an opportunity,
and use a non-base currency, such as GBP in this
hypothetical scenario, this is what happens:

  • I set the Currency field to GBP
  • I put a value in the money field, called Estimated
    Revenue
  • I save the record. During the save operation,
    the following occurs:
  • The Exchange Rate field is populated with the
    value 0.61300000000
  • The Estimated Revenue_base field is populated
    with the value from the Estimated Revenue field
    converted to its inflated USD value
  • Both of these updates occur whether the Exchange
    Rate and Estimated Revenue_base fields are exposed
    on the form or not

Afterwards, when the dollar makes that incredible comeback,
I need to update my exchange rate on the GBP currency.
I do so – it’s now 1, reflecting a 1:1 conversion rate.
What happens to my opportunity? Nothing, at least not immediately.
The Exchange Rate field on my opportunity is not automatically populated
with the new value of 1. However, as soon as I change the value of ANY money
field on the opportunity and save the form, the Exchange Rate field is updated
with the new value from the GBP currency record, and the Estimated Revenue_base
field is updated with the new converted value (and any other _base fields for other
money fields on the form – remember, there is only 1 Currency and 1 Exchange Rate field,
so these values apply to all money fields on the form). This also happens if I change the state
of the record, such as closing the Opportunity as won or lost, activating or closing a quote, etc.

http://andrewbschultz.~exchange-rate-updates/

ImportSequenceNumber The import sequence number is a whole number field. The range can be customized if needed.
The basic idea behind this field is to store the sequence number (ID) of the source record during
data import to CRM. If this field is mapped during migration package/script design,
it provides a one-to-one link between source row and destination CRM record.

 

http://www.powerobjects.com/~-number-field/

ModifiedBy User who modified the record.
ModifiedOn Date and time when the record was modified.
ModifiedOnBehalfBy To create records on behalf of another user. Used for impersonation in CRM 2011
OverriddenCreatedOn Date and time that the record was migrated.
http://www.magnetismsolutions.~_crm_2011_part_1
TimeZoneRuleVersionNumber The definition of a recurrence pattern of how local time is converted to/from Universal Coordinated Time (UTC). This includes information about Daylight Savings Time (DST) versus Standard Time. Time zone rules can change over time, thus a time zone can have multiple rules from a historic point of view, but can have only one rule that is current and in effect.

 

http://blogs.msdn.com/b/crm/archive/2008/05/14/time-zones-in-microsoft-dynamics-crm-4-0.aspx

TransactionCurrencyId Currency associated with the entity.
UTCConversionTimeZoneCode Time zone code that was in use when the record was created.
VersionNumber This column is used mainly for concurrency support. The VERSIONNUMBER field is a unique value that gets incremented as records are updated – it can be very useful.

Get data from Dynamics CRM 2015 to Power BI using connector

Update 20th Feb 2016: 

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

Original Post:

The Microsoft Dynamics CRM content pack for Power BI Preview allows you to easily access and analyze CRM data in Power BI. The content pack uses the OData feed to create a descriptive model, with all the entities and measures needed such as Accounts, Activities, Opportunities, Product, Leads, Users and more.

After you have Power BI subscription, Click Get Data on the welcome screen.

Select Microsoft Dynamics CRM and click Connect.

Important:

Make sure your popup blocker is disabled or is set to allow popups from app.powerbi.com.

Provide the OData URL associated with your account. This will be in the form “https://mytenant.crm.dynamics.com/XRMServices/2011/OrganizationData.svc

When prompted, provide your credentials (this step might be skipped if you are already signed in with your browser). For Authentication Method, enter oAuth2 and click Sign In:

After connecting, you’ll see a dashboard customized for a Sales Manager, populated with your own data:

 

For more information, see below link. Happy analyzing the data J

https://support.powerbi.com/knowledgebase/articles/462791-microsoft-dynamics-crm

CRM 2015 Web API preview documentation

**[Original Post from Microsoft CRM Team Blog]

CRM 2015 introduced a new API for enabling creation of applications across multiple platforms.

This new Web API is available as a preview feature to Microsoft Dynamics CRM Online organizations that use Dynamics CRM Online 2015 Update 1.

To support this preview feature we have put together documentation and samples you can find at https://msdn.microsoft.com/dynamics/crm/webapipreview.

In this topic