Check user’s access to a record – upcoming feature in Dynamics 365

Nishant Rana's Weblog

Was going through the Model-Driven Apps documentation and found the below article

https://docs.microsoft.com/en-us/powerapps/user/access-checker

It talks about a Check access button on the command bar of a record which will list down all the rights/access/privileges on that particular record.

And also how the user has got those accesses, through security roles directly assigned or through the team the user belongs.

We can also check the access of the other users as well through user lookup.

More on Access in Dynamics 365

Hope it helps..

View original post

Advertisement

Process Optimization – Dynamics 365 CE / CRM / CDS SSIS Integration toolkit – KingswaySoft

Process Optimizations is a new feature added in the CDS / CRM Destination Component of KingswaySoft’s SSIS Integration Toolkit as part of November 2020 Release. Check other posts on SSIS and Dynamics 365 https://nishantrana.me/2020/10/16/ssis-kingswaysoft-and-dynamics-365/ These options if enabled, will turn off or disable plugin, workflow, entity auditing during pre-execution temporarily, during the writing process, and […]

Process Optimization – Dynamics 365 CE / CRM / CDS SSIS Integration toolkit – KingswaySoft

Migration of Personal views/charts/dashboards with sharing information

In my previous blog I explained the issues that I faced while POA entity migration. Here I will explain the whole process that I followed to migrate the personal views with sharing information. I used kingsway soft adapter for my migration process.

We have 2 steps to migrate the data

  1. Source CRM –> Intermediate database.
    1. I enabled “Data Export Services” on the source instance to push the data into intermediate database.
    2. Since “userquery” entity is not available in “Data Export Services”, I Designed a simple SSIS Package with source (Dynamics CRM) and destination (OLE DB) components.
    3. We have to impersonate the owner of the personal view in the Dynamics CRM Source component to read this information.
    4. So we have to run this package multiple times based on the user count.
  1. Intermediate database –> Target CRM
    1. Designed 2 more SSIS Packages to push “userquery” and “principalobjectaccess” (share) information to Target CRM instance.
    2. userquery package is pretty straightforward with source (OLE DB) and destination (Dynamics CRM) components. So I am not explaining much about this package.
    3. But we faced some issues which I explained in the previous blog while migrating “principalobjectaccess” data. I followed the below process to migrate this data.
      • Created a SQL View in intermediate database on “principaobjectaccess” table by joining the “userquery” table to get the owner of the personal view.
      • I used this view in “OLE DB” source component to read the data.
      • This owner field should be mapped to “impersonateas” field in the destination component, so that internally the share request will be executed under owner context.
      • Batch size should be 1 in the Dynamics CRM Destination component, otherwise it will not process all the records.

This process is same to migrate personal charts (userqueryvisualization) and dashboards (userform) also. Hope this information is helpful.

Migration of POA (shares) of personal views/charts/dashboards

In our project we got a requirement to migrate shares of personal views. We all know that share information will be stored in “principalobjectaccess” table. I faced couple of issues while migrating this data and I want to share this information here.

Issue 1: You can’t share a personal view owned by other user. To solve this issue, Kingsway soft provided a field called “impersonateas” which should be mapped to owner of the personal view (you can get this information by join the userquery table with POA table). So that the share request will be executed under owner context.

Issue 2: After Issue 1 is fixed we faced another weird issue that the package is only processing only 1 share in target instance irrespective of no.of records from the source. After a bit of research, we identified this is because of the “Batch Size”, after changing the batch size to 1 with out any threads it processed all the records from the source. I hope it is because of the impersonation we are using in the package.

I hope this information helps some one who wants migrate sharing information of persona views/charts/dashboards.

Disable Background Processing Mode

Recently when I am running a background process I got the below error on one of the customer’s instance.

The async operation was skipped because the org is in ‘Disable Background Processing’ mode

After a bit of research I understand, we can disable the background process execution from admin control. Follow the below steps to enable / disable background processing.

  1. Navigate to https://admin.powerplatform.microsoft.com
  2. Select the Instance that you want to make this change.
  3. Click on “Edit” to open the settings screen where you could make this change.
  4. Change the “Background operations” setting as per your requirement.

The new Column comparison in queries in Dynamics 365 / PowerApps

Nishant Rana's Weblog

Column Comparison is one of the best features that has been recently added to the product.

Column comparison allows us to compare values of 2 different columns in our query be it Fetch XML, Web API, or through SDK API.

Sharing some of the basic examples that we tried using our favorite  FetchXML Builder

  • If we run the following query “Find all contact which has the first name equal to the last name”

The result –

  • Find all contact where the first name is not equal to last name

The result –

The operators supported are –

Equal LessEqual GreaterEqual
Not Equal LessThan GreaterThan
  • Only 2 columns can be compared.
  • Only compatible attribute types can be compared.
  • E.g. “Find all contact where the first name is equal to address 1 city”

The result

It works as both are string attributes.

  • If we try comparing text field with options set, we…

View original post 111 more words

Every PowerApps Formula You Ever Wanted To Know As A Functional Consultant

DIY D365

Hello Readers

This blog is to help fellow consultants to start their journey on PowerApps. We all know how easy it is to put together a screen on Canvas Apps but as and when we need a specific action on it or from it; we fall short of formulas/functions. That’s because we never required these formulas in Model Driven Apps.

But as Business/Functional Consultant, you want to deliver value to your client, make their life easier, Don’t you?

I am sure you do, so here I am providing you with 20 essential functions you must know as a functional consultant. This can be a starting point for you; well, Microsoft is trying hard for Business Users and Functional Consultants to get in the rink of Power Platform. Their learning path is specially designed for Business Users and Functional Consultants, check it out here Learn PowerApps.

All formulas below are…

View original post 504 more words

Use Azure AD Conditional Access to block access by country (Dynamics 365)

Nishant Rana's Weblog

In the previous post, we covered conditional access based on the device platform, here we’d look into how we can use the network location to block the access.

We can either use IP ranges or Countries / Regions for defining the location.

Login into the Azure Portal

https://portal.azure.com/

Navigate to Azure Active Directory – Security – Named locations to define the location.


Here we are adding a new countries location record.


For the new location, we have selected India and UAE.


Next click on Conditional Access to define a new policy.


For Users and groups, we have selected a user named testuser1.


For Cloud Apps or actions, we have selected Common Data Service.


For Conditions, we have specified Locations condition with the Restricted Locations record that we had created earlier.


For Access Controls, we have selected Block access.


Enable and create the policy.


Before…

View original post 57 more words

Status Reason Transitions in MS CRM

Today while exploring the CRM, I found “status reason transitions” option of status reason field. This option is introduced many years back but I haven’t noticed. Status reason transitions are an optional additional level of filtering to define what the status reason value can be changed to for each status reason. That means it will restrict the users to select the status reason which is not valid based on current status reason. Follow the below steps to configure this in your environment.

  1. Open the Default solution.
  2. Navigate to the entity (Case for example).
  3. Go to Fields and open “statuscode” field.
  4. Click on the “Edit status reason transition” button on the top.
  1. A window will open to configure the status reason transition . The Current Status Reasons are available on the left and for each of the Current Status Reason you can specify the available New Status Reasons.
  2. Select “Enable Status Reason Transitions” check box and add the new status reasons based on your business need.
  1. Save and publish the changes.

In the above example, one of the business scenario is, I will not allow the users to select “Problem Solved” status reason from “On Hold”. User has to change it to “In Progress” in order to move to any other status reason.

Like this you can configure all your scenarios based on your business needs. This can be configured on both System and Custom entities.

MSDN Link: https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/customize/define-status-reason-transitions