How to – Use RetrieveRecordChangeHistoryRequest to get Audit Detail in Dynamics 365 CE


Just sharing a sample code to retrieve the Audit Detail using RetrieveRecordChangeHistoryRequest.

RetrieveRecordChangeHistoryRequest changeRequest = new RetrieveRecordChangeHistoryRequest();
changeRequest.Target = new EntityReference("entitySchemaName", "entityId"));
RetrieveRecordChangeHistoryResponse changeResponse =
(RetrieveRecordChangeHistoryResponse)_service.Execute(changeRequest);

AuditDetailCollection auditDetailCollection = changeResponse.AuditDetailCollection;

foreach (AttributeAuditDetail attrAuditDetail in auditDetailCollection.AuditDetails)
{
var auditRecord = attrAuditDetail.AuditRecord;

Console.WriteLine("Entity: " + ((EntityReference)auditRecord.Attributes["objectid"]).LogicalName);
Console.WriteLine("Operation: " + auditRecord.FormattedValues["operation"]);
Console.WriteLine("Action: " + auditRecord.FormattedValues["action"]);

var newValueEntity = attrAuditDetail.NewValue;

foreach(var attrNewValue in newValueEntity.Attributes)
{
Console.WriteLine("New Key: " + attrNewValue.Key + "New Value: " + attrNewValue.Value);
}

var oldValueEntity = attrAuditDetail.OldValue;

foreach (var attrOldValue in oldValueEntity.Attributes)
{
Console.WriteLine("Old Key: " + attrOldValue.Key + "Old Value: " + attrOldValue.Value);
}
}


The record whose Audit History we are retrieving :

Output :

AuditDetail.AuditRecord :

AuditDetail.OldValue n NewValue:

Hope it helps..

Advertisements

Using the Content Access Level for KB Articles in Customer Self-Service Portal


Suppose we have already configured Portal, created contacts and associated KB article to the Portal.

Now the scenario we want to implement is we want a particular user to have access to all the KB article and another user to only specific KB Articles.

For this, we will make use of Content Access Level concept of the portals.

Content access level can be assigned to KB Article and can also be assigned to the Contact Users.

There are 3 content access levels OOB, we can also create our own content access levels.

We have 2 users in our portal, one user we have assigned Default content access level and to another user, we have assigned Premium Users content access level.

Now let us associate content access level to the KB Article.

If we try to edit the KB Article in the Web, we will be presented with the following information

Let us open the Customer Service Hub

The other challenge we will face here is the default and the only form being displayed inside the Customer Service Hub for the KB Article doesn’t include the section or sub-grid for Content Access Level.

To add the Portal Interactive Experience Form, open the Customer Service Hub app in app designer (Settings à My Apps) and add the form, followed by Publish.

Now let us update our KB Article and associate content access levels.

Now the most important step, enabling the Content Access Levels for the website.

Navigate to Portals à Site Settings and set Value field as True.

With all the required configuration done, let us search for the keyword booking in the portal for both the users.

  • User 1 (on the left)à Default Users CAL and User 2 à Premium Users CAL
  • Booking Travel KB Article à Premium Users CAL.

The article is accessible only to User 2.

Now search for Instruction Manuals and Drivers KB Article which has both Default and Premium Users CAL.

As expected the article is accessible to both the users

More articles on Portals

https://nishantrana.me/2017/03/07/portal-blog-post-list/

Hope it helps..

How to – Use Recurrence trigger in Microsoft Flow


Schedule – Recurrence trigger inside Microsoft Flow makes it extremely easy and effective to write a recurring job specially in the context of Dynamics 365, wherein it isn’t straight forward. We can use Workflows with wait and timeout conditions but that isn’t the easiest and efficient way. Each approach has its own pros and cons though.

The scenario we are going to implement is getting basic details of all the leads record created every hour inside Dynamics 365 CE and create a Task in todoist to call that lead.

Login to Microsoft Flow

Navigate to My flows and select Create from blank

Search for recurrence trigger and select it.

Specify interval as 1 and frequency as hour and click on New step and select “Add an action

To get the records from Dynamics 365 CE, we need to use “Dynamics 365 – List records” action. Search for the same and add it.

For List records action, select the organization in the Organization Name, Leads for the Entity Name and for filter query specify “createdon ge addHours(utcNow(), -1)“: i.e. lead records created in last one hour as shown below

Add a new step “Add an apply to each”

Select value (list of items) for “Select an output from previous steps” field of Apply to each and click on Add an action.

Search for todoist and select Create a task action. Login or create a new account in Todoist.

Specify Inbox as the Project Id and for the title use the dynamic value of lead i.e. Last Name, First Name and Mobile Phone.

Save the Flow and click on Test to see it in action.

The run activity will show the status of test run along with any error during the flow execution. In our case it has ran successfully.

Inside Todoist we can see the task created.

Hope it helps..

Advertisements

Power BI with Dynamics 365 CE – Refreshing the Dataset


In the previous post, we used Dynamics 365 Dashboard and Power BI Tile to show Power BI Dashboard and report inside Dynamics 365.

https://nishantrana.me/2018/08/20/power-bi-with-dynamics-365-ce-showing-power-bi-dashboard-tile-inside-dynamics-365-ce/

Now as a next step, we want to make sure that the users are looking at the latest data possible inside the Dashboard\Reports.

In case of Online Services like Dynamics 365 (Online), we have the option to manually Refresh the data.

To see it in action, let us create a lead record in Dynamics 365.

This is how our Dashboard looks like for now à

Now back in Power BI Service right, click on ellipsis for the Dataset and select Refresh Now.

We can see the newly created lead in our Power BI Report inside Power BI Service and Dynamics 365 CE.

The other option we have is to Schedule the refresh.

Navigate to the Dataset and select Schedule Refresh

We can select the Refresh Frequency as Daily or Weekly.

And we can set it to refresh up to 8 times per day as shown below.

With Power BI Pro License, we can complete the scheduled refresh 8 times a day whereas the Power BI Premium allows the refresh up to 48 times per day.

https://powerbi.microsoft.com/en-us/power-bi-premium/

Some helpful links

https://docs.microsoft.com/en-us/power-bi/refresh-scheduled-refresh

https://www.powerobjects.com/2018/01/11/power-bi-data-refresh-performance/

https://crmtipoftheday.com/category/power-bi/

Hope it helps..

Power BI with Dynamics 365 CE – Publishing Power BI Report to the web


In the previous post, we learned how to create a simple Power BI Report using Power BI Desktop

https://nishantrana.me/2018/08/20/power-bi-with-dynamics-365-ce-creating-report/

Now let us publish the report to Power BI Service from within the Power BI Desktop.

To do so, select the Publish button

Publish window will ask us to save the report file (if not saved) before we could publish it.

Here we are publishing it to the default “My Workspace” app workspace within Power BI Service.

Publishing the report from Power BI Desktop publishes both the report and dataset associated to it in the Power BI Service. We can think of DataSet as the Database.

After successful publish we can see the Report and Dataset being added inside the Power BI Service (https://app.powerbi.com)

From with Power BI Service, we have the option of Publishing the report on Web so that it could be accessed by anyone having that URL.

To do so,

Select File
à
Publish to Web to publish it.

The Embed dialog box pops up as shown below with all the information.

Clicking on Create Embed Code will open the confirmation dialog box, that shows the potential risk associated with sharing the information over the internet.

Here, clicking on Publish generates the link for the report and also the HTML code which can be used for embedding it within an IFrame.

Within Dynamics 365 CE, we can use this public URL to show it inside the IFrame component of the Dashboard.

The report within Dynamics 365 CE’s Dashboard.

Next, we will see how to create Dashboard from the reports created and how to share them with other users and how to use the Power BI Dashboard and Power BI Tiles feature of Dynamics 365.

Hope it helps.

“Cannot update a published workflow definition” exception in Dynamics 365


We would get this exception if we try updating an Activated Workflow using Update Request.

So basically, if we need to update the activated\published workflow i.e. Activate or Deactivate it or change the Owner of the workflow, we would need to use the SetState and Assign Request. If we try doing it using the UpdateRequest we will the above error message.

Perform specialized operations using Update

Also, we noticed that if we try changing the state from Deactivated to Activated through Update Request, it will not change the State to Activated and it will not throw an exception as well.

However, if we use Update to Change the Owner for the deactivated workflow, it works fine.

Hope it helps..