Dynamics 365 Portals: A brief introduction to a brave new world

With the advent of Dynamics 365 and the acquisition of ADX Portals, Microsoft have introduced Dynamics Portals to the already bulging feature set, but what can you currently achieve using the release version?

Firstly, a very Happy New Year to you. As we enter the new year the world of Dynamics 365 has begun to open up new opportunities and also a whole stack of new questions for clients and partners alike as to what the new capabilities can bring to the table, one of which is Dynamics 365 Portals.

Dynamics 365 Portals allows external users access to CRM/Dynamics 365 content via a contact record and allows specific content to be accessed based on their web role(s). The solution enables the CRM Administrator to use CMS style functionality from with the Dynamics application.

In the course of investigating the suitability of the solution for a proposed client delivery I have collated some information on a number of key areas, which I have detailed below;

Supported Deployments

Dynamics 365 Portals should be available for organisations with subscriptions to Dynamics 365 (Fall Wave) and MS Dynamics CRM 2016 Online Update 1 (Spring Wave).

Dynamics 365 Portals is not compatible with MS Dynamics CRM 2013 or 2015 (on premise or online) or Microsoft Dynamics CRM 2016 (on premise and online).

Though it should be possible to add Dynamics 365 Portals as a subscription for MS Dynamics CRM 2016 Online Update 1, you may have a little difficulty – i.e. the solution is not displayed as a preferred solution, especially when working with a licensing provider/enterprise licensing. If so contact your CSP or MS Support.

For more information on preferred solutions see; https://technet.microsoft.com/library/dn878909.aspx

Dynamics 365 comes with 1 portal and you can purchase more portals as an when needed.

What Can I Achieve Using a Trial?

If you have not upgraded to the latest release (Dynamics 365) and still want to check out the Dynamics 365 Portal solution then you can add the preferred solution to a D365 Trial with access to the full product suite. I added this to a non-customised version so I was able to work with configuration items easily.

By default your portal is made available against the “microsoftcrmportals.com” domain.

Authentication for Dynamics 365 Portals

D365 Portals provides authentication built on the ASP.Net Identity API. Users will require a username and password to sign-in and it is possible to have two-factor authentication using email or SMS. Non-D365 users are associated with a Contact and it is possible to send an invitation to contacts previously created in the system to allow them to register.

dyn365portals_access

Tiered Access for Customer Users

Not all users are created equal, and nor should they be. As part of the security access configuration for Dynamics 365 Portals you can set up different web roles. These web roles are applied to a Contact (the primary record for your portal user) and can allow them to perform specific actions or access restricted content. Default web roles can be created. You can get more details on web roles in the link; https://community.adxstudio.com/products/adxstudio-portals/documentation/configuration-guide/content-authorization/web-roles/

A Rose by Any Other Name; Differences in Features

It is important to remember that as things stand Dynamics 365 Portals is not ADXstudio Portals, though they are built on a similar framework there are differences in the features and deployment methods.

This means we cannot assume that because a feature was supported using ADX v7 that it will be supported by Dynamics 365 Portals (v8.x). Adoxio Business Solutions (which continues to function after the Microsoft purchase of ADXstudio) published a feature comparison table here; https://www.adoxio.com/crm-portals-and-crm-portals-feature-comparison/

Some of the notable omissions from Dynamics 365 Portals are; Issues from the “Communities” feature set, Conference/Events management from the “Marketing” features and E-commerce – when compared to ADX v7. Which leads me on to the next point…

SharePoint Integration

The comparison table provided by Adoxio includes the item “SharePoint Integration” under integrations, and then supplements this with “leverage SharePoint’s secure document management”.

After unsuccessfully attempting to get this up an running in a trial version of Dynamics 365 and using this walk-through; https://community.dynamics.com/crm/b/microsoftdynamicscrmsolutions/archive/2016/08/17/crm-portal-and-sharepoint-integration

I encountered this alert when accessing my portal page;

dyn365portals_sperror

So, I put the question to a Senior Partner Consultant over at Microsoft and the response I received was that the product team confirmed that the SharePoint integration does not work with CRM Portals (v8.x).

They did mention that it’s in the roadmap for a future release, but there is no confirmed release date yet. It is tentatively expected in the Spring Release in 2017, but not firmed up at this point in time.

So it would appear that for now there is no SharePoint capability, if this is important, especially for external parties such as customers or partners then you may be able to implement a custom web component to handle the display of documents in the portal.

However, for your specific deal requirements involve just uploading files, Dynamics 365 Portals also supports Azure storage, which can be a better alternate solution to SharePoint for file storage (upload etc.).

Templates

There is no need to start your portal adventure with a blank canvas, you can leverage some of the ready made templates to act as the basic structure for your portal – including pages and page templates, for instance the Customer Service Portal.

They key benefits of starting with the Customer Service Portal are that by default you can access the following features;

  • Portal Dependencies
  • Portal Base
  • Portal Workflows
  • Web Notifications
  • Microsoft Identity
  • Identity Workflows
  • Web Forms
  • Feedback
  • Blogs
  • Forums
  • Forums Workflows
  • Portal Timeline
  • Customer Service
  • Knowledge Management
  • Microsoft Get Record ID Workflow Helper
  • Bing Maps Helper

After that you can configure the additional elements you need, or disable items as you see fit by creating supplemental web roles, pages and web files. Access to elements such as “Contact Us” and “Submit a Case” are already provided.

Migrating a Portal Instance

It is possible to migrate the configuration made in sandbox instance to production instance using Configuration Migration Utility which comes with Dynamics 365 SDK.

Custom Domains

As mentioned earlier Dynamics 365 Portals can be hosted in the MS domain, however it is also possible to use a custom Domain Name for your portal, for example; “myaccount.company.com”. To do so you will need enter the domain and provide an SSL certificate for the HOSTNAME in the settings/admin area for the portal solution which is accessed via Applications associated with your D365 instance in Office 365.

On Brand; Customise the “Look and Feel”

Your D365 Portal can be tailored to meet your branding requirements using CSS/Bootstrap added as a web file.

It is pretty impressive what can be achieved with the first iteration of Dynamics 365 Portals, users of the existing ADX product may decide to wait for a future release to migrate. It is also unclear at this point how easy it will be to move to D365 Portals for existing ADX customers – if you have any information to share please enter a comment and let me know. It appears to me that these are the first steps into a brave new world. and I will keenly await the announcements for the coming releases and to see how the functionality is dove-tailed by Power Apps.

There is an intro to the configuration of D365 Portals here. Give it a read and spin up a trial, it is well worth a play.

Happy CRM’ing.

 

 

 

 

 

 

Advertisements

Trigger Field Updates from Roll-up Fields in MS Dynamics CRM 2015

I recently read a post from Jukka Niiranen on limitations of using roll-up fields in Microsoft Dynamics CRM 2015 (http://survivingcrm.com/2015/02/crm-2015-rollup-fields-gotchas/), which was very useful – however I have been working on a client solution that did benefit from this feature using some simple configuration and business rules.

The idea is that you can use a roll-up field in CRM based on hierarchical and/or associated records to display a cumulative currency value, such as “Total Spend” or “Total Revenue” to trigger updates to other attributes such as, “Service Level” or “Customer Type” in the associated Account or Contact without using code. In some cases, using the “keep it simple” principle then you can achieve this using;

  • Roll-up Fields
  • Roll-up Filters
  • Business Rules

The scenario I am using as an example is that a customer makes a booking that is associated with their contact, the more they spend (new_totalnetbookingspend) the higher their “Loyalty Level” (new_membershiployaltystatus), but the principles can be applied to your customisations and other situations. So let’s get started.

Please Note; Business rules run only when the form loads and when field values change. They do not run when a record is saved, unless the scope for the rule is set at an entity level. For this scenario my client works within the Contact entity – it cannot currently replace the functionality of a plug-in.

Step 1 – Create a Roll-up field Go to your solution in CRM and the entity of your choice, (in this case I am using Contact) and either the asscoiated “Fields” or the “Form” you are going to work with, (this will depend on your working preference), then create a new field. Next complete the required information for your field, such as; the “Display Name” and “Field Requirement” level and add a “Description” if you desire, (remember in this version of CRM the description appears when the user rolls-over the field label). Then choose your “Data Type” in this case the one I am using is “Currency” and then the “Field Type” as “Rollup”. Then “Save” you field.

rollup_field

Step 2 – Define your Roll-up Calculation Then navigate down to the “Field Type” field and click the “Edit” button that should have dynamically appeared in the field properties window. This will launch the pop-up window for your roll-up calculation. You will need to complete the following;

  • Related Entity
  • Filters (the use of filtering is optional)
  • Aggregation

For filtering you may want to filter out records assigned a certain ‘status reason’ or ‘type’ depending on the requirements, for aggregation you can choose a “SUM” of the target field (in this case a sum of the NET Booking Amount),  I have included a screen shot of my example calculation below. When you are done click “Save and Close” and then add you new field to the entity form and Publish” your changes.

rollup_calc I also have the existing field which I want to update based on the roll-up value which is an option set, you may need to create a field before continuing to the next step.

Step 3 – Create a Business Rule As Jukka explains in his post; “No standard workflow or Business Rule will allow you to initiate the roll-up field calculation based on the custom business logic you’d like to define.” However you can trigger a business rule based on the value held in the field itself. Out of the box this relies on the roll-up value being updated either using the “refresh” or the system job to calculate the roll-up being completed. The business rule will execute when the record is loaded or the roll-up field value changes. So, for this example my contact field “new_membershiployaltystatus” has three options; Gold, Silver and Bronze. The loyalty status will be set based on the following rules;

  • Bronze – If the contact has a “Total NET Booking Spend” < $2500.00
  • Silver – If the contact has a “Total NET Booking Spend” >= to $2500 and < $5000
  • Gold – If the contact has a “Total NET Booking Spend” >= to $5000

Please Note; “Bronze” is also the default value for my option set “new_membershiployaltystatus”. To create a new business rule in your CRM solution navigate to the entity (in this case Contact) and click the “Business Rules” item in the nav’ tree and then “New”. You will then need to complete the Condition statements and Action for each of the possible options, as per the example below, then “Save” and “Activate” your business rule. You can also choose a form to execute the rule against, or execute against all forms.

loyalty_businessrule

Additionally I locked my fields on the form, however if you want the option set to be “read only” you will need to define this in the rule, not on the form – if you do it from the form the value changes might not be committed when the record saves. Don’t forget to test to check your results!  Easy. 🙂

loyalty_contact

 Happy CRM’ing!
**UPDATE** 16/08/2015 – You can use a plug-in to force the roll-up calculation to be updated using CalculateRollupField, you can also populate another attribute such as a date field to be populated when it has and use this to trigger a standard workflow. Thus negating the need for the record to be opened in the UI for the associated attribute to change, for more information please see: https://msdn.microsoft.com/en-us/library/dn817863.aspx (MH)

Trigger OnLoad Workaround for AJAX issues in CRM 2013

I thought I’d create a quick post as I was required to use a workaround for a client today involving an OnLoad event that wasn’t being called correctly in Microsoft Dynamics CRM 2013.

The background on this is that the AJAX used to refresh the page in CRM 2013 doesn’t necessarily call the OnLoad action, in this case it was affecting the JavaScript used to switch the Account from base on the value “Account Type” option set.

I remembered that a colleague had mentioned this in the past and advised that there was indeed a workaround using configuration, namely;

  • 1 x Boolean field
  • 1 x Synchronous Workflow
  • Update to the fields OnChange event

So what do you do?

Step 1 – Create a new Boolean (Two Option) field for the entity or entities effected. In my client’s case it was Account, using the following steps; Settings > Solutions > Choose Your Solution and Open it > Entities > Account > Fields > New.

Then make sure you add a display name that will make sense to you, set the “Field Requirement” to “Optional” and set the “Type” option to “Two Options”, then click Save and Close.

boolean_triggerfield

Step 2 – Next add the new field to the required forms against your entity, then click “Change Properties” on your field and uncheck “Display Label on the Form” and “Visible by Default” and also check “Lock the Field on the Form” (this will endure admin’ users will have to think twice before removing the field) then click “OK” to close the box. Next click Save and then Publish your changes and close the form (still no button for Save, Publish and Close), repeat for other forms as required.

properties_triggerfield

Step 3 – Create a new Synchronous Workflow (real-time) Process against the entity with “Organisation” as the scope (in this case Account) in CRM that is triggered when;

  • Record is created
  • Record status changes
  • Record fields change (check the required fields to apply this workflow to)

Add a workflow step to update the entity (in this example Account) and in the “View Properties” area select the Boolean we just added and set the field value to “Yes”. Save and Activate the workflow.

Please Note; be careful to select the right option in the “execute as” property, if the owner of the workflow is the system admin’ account then you should have no issues, if it is the user who made the changes, then you will have to consider their security role for the entity.

Step 4 – Finally add the JavaScript from your OnLoad that switches the form etc. to the OnChange event of the new Boolean field in your entity form. You can find this under the field by navigating to; Change Properties > Events > OnChange > Event Handlers > Add.

Remember to add the function in minus “()”. Then click “OK” and Save, Publish and Close. Repeat as required for other forms.

Don’t’ forget to test your changes and you are done.

In-form Analytics in Dynamics CRM 2015

Due to the updates included in Microsoft Dynamics CRM 2015 it is even easier to provide contextual data insights from within records, such as accounts and contacts based on their related records. Through some simple, yet effective configuration you can provide users with an up-to-date tailored overview of your organisations’ interactions with clients or potential customers .

In this example I will configure the Account form in CRM to display Sales Pipeline and Order data using the following functionality:

  • Roll-up Fields
  • Sub-grids
  • Charts

Prior to customising your entity form you will need to identify what content you are looking to deliver within the form and makes sure the entity relationships are in place.

Please Note: The amount of calculated data which is rendered on load for your CRM records can affect performance in the application, you will want to test the load time for your customisations to be sure it won’t impact on the overall user experience.

Step 1 – Create Roll-up fields in CRM

Roll-up fields in CRM are a new feature introduced in 2015, they enable administrators to add calculated data fields to forms without the need for development. We can use this functionality to obtain data from Opportunities associated with an Account.

Firstly, navigate to Settings > Solutions in CRM and select your solution, navigate to the Account entity and open the Account form you are going to be working with.

Once in the account form select the Insert tab at the top of the page and click to add a new Tab. Give your new tab a name, (in this case I have called mine “Sales Data” and formatted as two columns) and click OK. There are some additional fields that have been added to CRM 2015 out of the box; “Open Revenue” and “Open Deals” which you will find in  the field explorer. For this example I am going to add both to my newly created tab in a section.

Add_Opp_Fields

You can open the field properties to view the roll-up calculation applied to each of these fields. In the field details you can see that the field type is set to “Rollup”, by clicking edit you will see the current aggregation and filters in use, those for the “Open Revenue” field are in the image below. The “Open Deals” field is a rollup that uses a count of open opportunities.

Rollup_Opp_Filter

Further to these fields I am going to add one for the “Closed Revenue Sum” and “Lost Revenue Sum” using the following steps; New Field > Currency Field > Field Type = “Rollup” > Edit.

For the Sum of Closed Revenue or Closed Revenue (Sum) field I have used the following rollup query;

Source: Account
Use Hierarchy: Yes
Relationship: account_parent_account
Related Entity: Opportunities (Potential Customer)
Filters: If Status Reason equals “Won”
Aggregation: SUM of Actual Revenue

For the Lost Revenue (Sum) field I have used the following rollup query;

Source: Account
Use Hierarchy: Yes
Relationship: account_parent_account
Related Entity: Opportunities (Potential Customer)
Filters: If Status Reason equals “Cancelled, Out-Sold”
Aggregation: SUM of Est.Revenue

Place your new fields on the form in the desired order and save your changes.

Step 2 – Add Charts to the Form

Next I am going to use the sub-grid functionality to add charts to the account form. This is a useful trick that can deliver some great results with very little fuss. The key is to make sure you are using the right view for the Chart for the sub-grid.

Insert a new section in the tab created in step one and then click to insert a new “Sub-Grid”, in the Set Properties window select “Only Related Records”, the entity to “Opportunities (Potential Customer)” and the default view to as required, for this example I am going to use “Open Opportunities”. Then scroll to “Chart Options” at the bottom of the window and select the “Default Chart”, (I have used the “Sales Pipeline” chart), then select “Show Chart Only”. Finally click “Set”.

Chart_Opp_Filter

Repeat the steps for the charts that you require, I created a custom view called “All Opportunities” and used this as a filter criteria for the “Deals Won vs. Deals Lost” chart. Adjust your chart formatting until you are happy with the layout and click save.

Step 3 – Add Sub-Grids

For this example I have moved the “Recent Opportunities” sub-grid to my newly created tab in its own section. If you are surfacing related data be sure to check the box for “Only Related Records”, you can also create specific views to use for your sub-grids.

Step 4 – Complete Your Configuration & Test

Finally, choose the appropriate formatting and layout to maximise the number of components added to your tab and set if the tab should be expanded by default or not, (collapsing the tab by default means that the data will only load when it is expanded rather than each time the form loads). Once you are happy hit “Save” and “Publish” your form.

Account_Opp_Tab

And there you go – easy, no fuss analytics that are filtered to the current record. The results for my example are displayed above, the key to this configuration is data – the more you have the better the results. You can also use JavaScript to hide or show the tab depending on parameters, such as customer type etc.

This is just a quick example of what can be done and hopefully has given you food for thought. Happy CRM’ing folks.

Some Useful Enhancements in Microsoft CRM 2015

With the latest update to the Microsoft Dynamics CRM application (first seen in the latest release for CRM Online) there are some useful enhancements that can be utilised out of the box. Some of the highlights noted whilst attending the Partner Boot-camp event are listed below:

Field Level Security is now available for OOB fields with the CRM 2015 update, there are a few fields that are still not available, however this should not affect the bulk of requirements. Previously there was a hack at the database level which could allow administrators to field level security to OOB fields, however this wasn’t available to those deploying online. Thanks to the update however this can be configured in a supported method via the customisations area of CRM.

Business Rules – can now be executed server side in CRM 2015 and there is additional functionality embedded to allow for the use of ‘if’ and ‘else’ conditions. To execute server side you need to add the business rule to run against the ‘entity’ rather than the form. The new functionality allows them to run on the CRM Apps as well as via the Outlook client. Additionally you can set default values and behaviours. Executing a business rule server-side means that imported data or offline sync’d data will be subjected to the rule. Unfortunately you still cannot hide form sections or tabs from a business rule, so you will still need JavaScript to execute these functions.

Business Process Flows – now include rule-based branching and can be used programmatically. This means that you can add up to 30 stages per BPF spanning up to 5 entities (including unrelated entities, for example the floe could move the user from a Case to an Opportunity). You can still have just one active BPF per record but you can switch processes, each stage can include up to 30 steps, there is no functionality for parallel waiting at this point.

Case Routing – Routing Rules and Case Creation Rules can be used to automatically create cases from incoming emails OOB. Conditions are used (as per the advanced find interface) to filter on particular attributes or subject strings. Workflow can still be created to route cases to queues via queue items. This functionality can be found by navigating to; Settings > Service Management.

Calculated & Roll-Up Fields – have been introduced into this version of CRM, this enables the configuration of calculated values and roll-ups without the need for development. Previously roll-ups would have been added via JavaScript or for more complex requirements via a Plug-in. A quick breakdown of what is available is as follows –

Calculated Fields

  • Read Only Fields in the UI
  • Real Time values
  • Can reference other calculated attributes but cannot be not self-referential
  • Not available currently offline
  • Calculated using system account
  • Cannot trigger workflows or be used in SLA calculations

Roll-Up Fields

  • Modified By and Modified on are not updated when a roll-up field changes
  • Formula cannot include records from a N:N relationship
  • Formula can’t reference complex calculated attributes
  • Formula cannot reference another roll-up attribute
  • Can be recalculated manually
  • Is calculated asynchronously
  • Account – Open Revenue and Account – Open Deals supplied OOB
  • Current Max. 10 per entity and 100 per org (Online) and this can be changed per Org, this allocation does not include the two OOB fields.
  • The use of Hierarchies is supported with these fields
  • Cannot trigger workflows or be used in SLA calculations

For more information on what is new in Microsoft Dynamics CRM 2015 and getting ready for the release check out the Customer Centre: http://www.microsoft.com/en-us/dynamics/crm-customer-center/get-ready-for-the-next-release.aspx