The Nigel Frank International Salary Survey 2020/21 for Microsoft Dynamics 365


The latest edition of Nigel Frank International’s Microsoft Dynamics salary survey is now live!

This will be their 12th annual report published, and has proven to be an invaluable resource to myself and my peers over the years.

I had the pleasure of contributing a foreword to the report, which set the scene in terms of where the Dynamics 365 ecosystem is now, what the future holds, and my own career journey. I can say with certainty that the ecosystem has been, and will continue to be, altered dramatically due to the Covid-19 crisis, as is the same with the technology sector as a whole.

The report uncovers a wealth of changing sentiments, along with work benefits, diversity statistics, the importance of certifications, and of course average salaries to name just a few topics covered. After reading through the results, here are my 5 main takeaways:

  • Certifications are growing in importance

The crisis has resulted in a huge increase of professionals upskilling; this is due to a combination of increased free time and job losses. Certifications are the best way to beat the competition in this increasingly difficult environment according to 61% of professionals surveyed, who believe certifications give you the edge in the job market. This along with the fact that getting certified can increase your salary by up to a reported 22% makes the decision whether to get certified or not an easy one. This was echoed by 80% of respondents who agreed Dynamics certifications were important towards increasing earning potential. Now is the time to upskill and safeguard your career!

  • The rise of working from home

The most obvious impact of Covid-19 on our working lives has been the shift from office to remote. The increase in related benefits offered such as a company laptop (73%) has followed, with 60% of respondents being offered homeworking. It will be interesting to see if this continues as restrictions across the world are beginning to ease, but it certainly seems the pandemic has changed our way of working forever. A company laptop and flexible/ remote working options have continuously been the most desired benefits when looking at past editions of the survey, so if this continues, job satisfaction will surely be boosted within the Dynamics workforce.

  • Equal rights are being championed

69% of respondents see their employers as being equal rights champions, which is hugely positive. Obviously, there is some way to go to reach the remaining 31%, however this signals change for the better across the industry. This along with 61% of employers promoting racial and ethnic diversity, and 56% hiring and retaining mature employees, is a resounding success. I hope this will continue and grow across the tech sector as a whole.

  • Increasing workload for partners

51% of employees working for Dynamics partners have seen their workload increase over the last year, and this was prior to the effects of the Coronavirus. This is a keen reflection of the digital skills gap, which will only be widening with the increased demand on cloud and digital in terms of keeping businesses and economies functioning. It is crucial that more people are encouraged into the tech sector in order to relieve the burden from these existing Dynamics professionals. This will be sure to further boost diversity within the ecosystem also.

  • Increased adoption of Dynamics 365

Since its release in November 2019, there has been an increase in take up from both new customers and existing users. 41% of end users, an 5% increase on last year’s result, are using Dynamics 365, with a further 19% expecting to use it in the future. The move to the cloud has been instrumental to this increase, and Dynamics 365 only looks to keep building momentum and customer base.

If you’d like to read the full report, and find out the average salary for your role and location, please do take a look here: https://www.nigelfrank.com/microsoft-dynamics-salary-survey/

Hope it helps..

Fixed – ID3242: The security token could not be authenticated or authorized in Dynamics 365


We recently got this error in our web application while trying to fetch some records from one for CRM On-premise organization.

This error was because we had recently configured IFD for that CRM Server.

We had around 6 organizations in that particular deployment and because of security reasons, we didn’t use the wildcard SSL certificate and had a single certificate with multiple subject alternative names (SAN Certificate), and this organization was not part in it.

Fortunately, it wasn’t the case in our production environment and we had this organization part of the SAN Certificate used for IFD configuration there.

So as a quick and temporary fix, as we just wanted to test a couple of methods, we disabled the Claims Based Authentication / IFD from the deployment manager for that short period.

Hope it helps..

New Admin Trial (subscription-based) experience – Dynamics 365


Recently a new Trial (subscription-based) environment option added to the tenants in the Power Platform Admin Center

Earlier we were limited to below options –

These new trial types are created and controlled by tenant administrators, as a result of signing up for a trial subscription and can be added to the existing tenant.

This new environment follows the trial subscription lifecycle (which is typically 30 days) and can be extended from the admin center.

https://admin.microsoft.com/Adminportal/Home#/subscriptions

  • A total of 3 trial environments can be created.
  • Trying to create 4th will give us the below error

Get more details here

https://docs.microsoft.com/en-us/power-platform/admin/trial-environments

Hope it helps..

The new Column comparison in queries in Dynamics 365 / PowerApps


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 will get below error message

  • Two option set can be compared as they represent the same type integer

Both having value 1

  • Comparing date fields

  • We are getting the result

  • For the lookups, comparing created by and owner id

works as expected.

  • For the below record we have the First name and job title as null

And here for below record, we have the same value for First Name and Job title.

On running the below query – find all contact where the first name is equal to the job title.

We get only one result. It ignored the blank (null) record.

Get all the details here

https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/column-comparison

Hope it helps..

Load data from SQL On-Premise to CDS (Common Data Service) using Power Platform dataflows


Let us continue our previous post where we created a connection to the below On-Premise SQL Server Database using an On-premises data gateway.

https://nishantrana.me/2020/07/06/configuring-on-premises-data-gateway-to-connect-tosql-server-on-premise-data-source-power-platform/

Here we will use the Power Platform
dataflows to load contact entity in CDS using that same on-prem table.

Sign in to Power Apps

https://make.powerapps.com/home

Navigate to Data – Dataflows and create a new dataflow

Dataflow can store the entities either in Common Data Service or Azure Data Lake for analytical purposes.

Leave the Analytics entities only checkbox unchecked as we will be saving the entities in the Common Data Service.

Next, let us specify the data source. Here we have selected SQL Server Database as the source.

Specify connection details

On specifying the Server and Database details, it will auto-populate the rest of the connection details if already defined.

Select the table and click on Transform data

Transform Data give us the option of further refining the data to match the destination.

Click on Next and specify the mapping.

We can either load data in a new entity

Or load to an existing entity.

Here we have selected contact entity and clicked on Automap option which has mapped FirstName and LastName fields for us. Manually map the email field. Here we have not mapped the ContactID field for now.

Here for Key fields in Field Mapping, it will list down alternate key, if defined for the entity.

Specify the refresh settings. We have kept is as refresh manually.

With refresh completed, let us check the contact entity.

Go to Data – Entities and Data tab, we can see the records added.

Now let us add one more record in the source database and refresh the dataflow manually.

As we had not specified key while defining the data flow, we have all the records created again including the new one.

Now let us define an alternate key for the contact entity.

And edit the data flow to map the ContactID field of the source database to the newly created alternate key.

Define the mapping for the alternate key field.

Also, let us delete the old records that were synced. After refresh is done, we can see the records created

What about the update?

Let us update the record in source and run the refresh

As expected, the record is updated and no duplicate records are created in CDS.

What about delete?

Now let us delete the record in the source and run the refresh

The records are not deleted in the Common Data Service.

What about updates in CDS?

As this is a one-directional flow to load the data from source to destination, any change in CDS will be overridden and will not be synced back to the source SQL Server database on the next refresh run.

Let us update records in CRM, and run the refresh.

As expected, the record in CDS is updated back with source DB.

What about the history and log of the refresh?

Show refresh history option gives us all the details of the refresh run and the failure and success of the records.

More on the data flow capabilities

https://docs.microsoft.com/en-us/data-integration/dataflows/dataflows-integration-overview#dataflow-capabilities-in-power-platform-services

Also, check out the interesting article below

https://carinaclaesson.com/2020/05/11/alm-for-power-platform-dataflows-the-story-begins/

Hope it helps..

Advertisements

How to – Configuring On-Premises data gateway to connect to SQL Server on-premise data source – Power Platform


Let us take a simple example to understand the steps to be performed for configuring an On-premises data gateway.

We have below database in our on-premise SQL Server which we connect to using On-Premise data gateway.

Below are the steps we need to perform to configure it –

Login to Power Apps and navigate to Data – Gateways

https://make.powerapps.com/

Download the On-Premises Data Gateway

Follow the installation wizard to install the on-premises data gateway

https://docs.microsoft.com/en-us/data-integration/gateway/service-gateway-install#minimum-requirements

Sign in with the Office 365 Organization account

Select Register a new gateway on this computer

Specify the name and the recovery key and click on configure

This completes the setup of the gateway.

Within Power Apps, we can see the gateway record created.

Now let us create a connection to our On-Premise SQL Server Database that uses the gateway configured

Navigate to Data – Connections and click on the new connection.

Select the SQL Server connection type, and specify the connection details of the on-prem database.

Select the gateway configured and click on Save, which will test the connection.

On a successful connection, we can see the connection created with status Connected.

Now as we have the connection established with our On-Premise SQL Server database through the gateway, we can use it for in various cloud services like Power BI, Power Apps, Power Automate, Logic Apps, Dataflow, etc.

Get more details here

https://docs.microsoft.com/en-us/power-bi/connect-data/service-gateway-onprem

Another option to connect to SQL On-Prem database is through Azure Hybrid Connections (this would for Azure App Service)

https://nishantrana.me/2018/02/19/using-azure-hybrid-connections-to-connect-to-sql-on-prem-database-from-azure-webjob/

https://www.slideshare.net/biztalk360/the-hitchhikers-guide-to-hybrid-connectivity-81149063

Hope it helps..

Advertisements