{"id":99,"date":"2021-12-01T16:05:04","date_gmt":"2021-12-01T16:05:04","guid":{"rendered":"https:\/\/blog.citrus-lime.com\/crmc\/?p=99"},"modified":"2021-12-01T16:05:05","modified_gmt":"2021-12-01T16:05:05","slug":"using-power-automate-to-synchronise-a-sql-back-end-to-dataverse-front-end","status":"publish","type":"post","link":"https:\/\/blog.citrus-lime.com\/crmc\/using-power-automate-to-synchronise-a-sql-back-end-to-dataverse-front-end\/","title":{"rendered":"Using Power Automate to synchronise a SQL Back-End to Dataverse Front-End"},"content":{"rendered":"\n<p>Power Automate gives us a useful tool to integrate data between systems in the cloud.&nbsp;<\/p>\n\n\n\n<p>This article will take the scenario where we have a collection of data in SQL that we want to integrate into the&nbsp;Dataverse&nbsp;Database for use in PowerApps \u2013 focusing on how we can pass User Roles and Teams where we may need this data present to&nbsp;help manage&nbsp;security rights.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"introduction\">Introduction\u00a0<a href=\"https:\/\/crmcs100.sharepoint.com\/sites\/IngkaAssetManagement\/SitePages\/Using-Power-Automate-to-synchronise-a-SQL-Back-End-to-Dataverse-Front-End.aspx?web=1&amp;OR=Teams-HL&amp;CT=1638372066473#introduction\"><\/a><\/h3>\n\n\n\n<p>DoOften,&nbsp;you&nbsp;may&nbsp;have&nbsp;information about users stored in your SQL&nbsp;server which&nbsp;you want to integrate in your&nbsp;Dataverse&nbsp;teams?&nbsp;This&nbsp;, so&nbsp;this&nbsp;article will&nbsp;guide&nbsp;you&nbsp;through&nbsp;how to set up a&nbsp;Power Automate Flow&nbsp;to&nbsp;associate Users to the connect Teams based on a separate SQL Database.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p>The example we are using here is from our experience in Asset Management, where each Asset may have&nbsp;its own Team of Stakeholders that we want mapped into PowerApps as a Team to correctly set User permissions to that Asset.&nbsp;populate&nbsp;your teams.&nbsp;&nbsp;<\/p>\n\n\n\n<p>This guide will instruct you from the perspective of tables, views and values unique to our work; you may need to adapt this&nbsp;to match your&nbsp;server and tables.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-1-opening-power-automate\">Step\u00a01:\u00a0Opening Power Automate\u00a0<a href=\"https:\/\/crmcs100.sharepoint.com\/sites\/IngkaAssetManagement\/SitePages\/Using-Power-Automate-to-synchronise-a-SQL-Back-End-to-Dataverse-Front-End.aspx?web=1&amp;OR=Teams-HL&amp;CT=1638372066473#step-1-opening-power-automate\"><\/a><\/h3>\n\n\n\n<p>First, you will need to&nbsp;log into your Office 365 account on your web browser. From there you will need to navigate to Power Automate using the menu bar on the left.&nbsp;<a href=\"https:\/\/www.office.com\/\">https:\/\/www.office.com\/<\/a>&nbsp;&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/crmcs100.sharepoint.com\/_api\/v2.1\/drives\/b!ett3tDwJkkiVkYkkgE3ffsNijSqWisFLlbJOggMCfn3Y3V8e7QYXSqpu3bqBnycO\/items\/014VZKWIEVDVW3EM42VFDLZVH2BZJ2KLKA\/thumbnails\/0\/c1600x99999\/content?preferNoRedirect=true&amp;prefer=extendCacheMaxAge&amp;clientType=modernWebPart\" alt=\"\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-2-creating-the-flow\">Step 2:\u00a0Creating the Flow\u00a0<a href=\"https:\/\/crmcs100.sharepoint.com\/sites\/IngkaAssetManagement\/SitePages\/Using-Power-Automate-to-synchronise-a-SQL-Back-End-to-Dataverse-Front-End.aspx?web=1&amp;OR=Teams-HL&amp;CT=1638372066473#step-2-creating-the-flow\"><\/a><\/h3>\n\n\n\n<p>Once&nbsp;you\u2019reNow we are&nbsp;in Power Automate, you will need to create a new Flow.&nbsp;The side-menu will bring you to the Create page, from where you can select the type of Flow you want to build.&nbsp;We suggest using a scheduled cloud flow to make sure your data stays up to date&nbsp;with&nbsp;any changes&nbsp;made&nbsp;in SQL.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/crmcs100.sharepoint.com\/_api\/v2.1\/drives\/b!ett3tDwJkkiVkYkkgE3ffsNijSqWisFLlbJOggMCfn3Y3V8e7QYXSqpu3bqBnycO\/items\/014VZKWIFSJAOEC6JY7JBZXJ7GN6ENWGQ2\/thumbnails\/0\/c1600x99999\/content?preferNoRedirect=true&amp;prefer=extendCacheMaxAge&amp;clientType=modernWebPart\" alt=\"\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-3-connect-to-the-sql-database\">Step 3:\u00a0Connect to\u00a0the\u00a0SQL\u00a0Database\u00a0<a href=\"https:\/\/crmcs100.sharepoint.com\/sites\/IngkaAssetManagement\/SitePages\/Using-Power-Automate-to-synchronise-a-SQL-Back-End-to-Dataverse-Front-End.aspx?web=1&amp;OR=Teams-HL&amp;CT=1638372066473#step-3-connect-to-the-sql-database\"><\/a><\/h3>\n\n\n\n<p>The first and most important step to add is the SQL&nbsp;Server&nbsp;action&nbsp;Get&nbsp;Rows (V2). This is the action which will&nbsp;retrieve the data from your SQL server&nbsp;to bring into your&nbsp;Dataverse&nbsp;tables.&nbsp;You will need to&nbsp;set up a connection with&nbsp;your&nbsp;SQL Server, for which there are multiple options, but we recommend using the SQL Server Authentication option.&nbsp;&nbsp;<\/p>\n\n\n\n<p>For this, you will need the server and database name you are getting your data from, and the username and password&nbsp;for your&nbsp;server. However, any other method will work too, so you can pick the option which works best for you.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/crmcs100.sharepoint.com\/_api\/v2.1\/drives\/b!ett3tDwJkkiVkYkkgE3ffsNijSqWisFLlbJOggMCfn3Y3V8e7QYXSqpu3bqBnycO\/items\/014VZKWIF5OXULXQTJUZGL4HSL4ARXCT5Q\/thumbnails\/0\/c1600x99999\/content?preferNoRedirect=true&amp;prefer=extendCacheMaxAge&amp;clientType=modernWebPart\" alt=\"\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-4-read-or-select-from-the-sql-table-or-view\">Step\u00a04:\u00a0Read or Select from the SQL Table or View\u00a0<a href=\"https:\/\/crmcs100.sharepoint.com\/sites\/IngkaAssetManagement\/SitePages\/Using-Power-Automate-to-synchronise-a-SQL-Back-End-to-Dataverse-Front-End.aspx?web=1&amp;OR=Teams-HL&amp;CT=1638372066473#step-4-read-or-select-from-the-sql-table-or-view\"><\/a><\/h3>\n\n\n\n<p>Once you have created your server connection, you will&nbsp;be able to select&nbsp;which table&nbsp;or view&nbsp;you want to read your data from.&nbsp;For this example, we will be using the Roles&nbsp;view, as&nbsp;the Asset ID in this table tells us which team each user should be allocated to.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/crmcs100.sharepoint.com\/_api\/v2.1\/drives\/b!ett3tDwJkkiVkYkkgE3ffsNijSqWisFLlbJOggMCfn3Y3V8e7QYXSqpu3bqBnycO\/items\/014VZKWIF52LHIFL5SYJE2I5KHWMS6APTH\/thumbnails\/0\/c1600x99999\/content?preferNoRedirect=true&amp;prefer=extendCacheMaxAge&amp;clientType=modernWebPart\" alt=\"\" \/><\/figure>\n\n\n\n<p>Note. If you have any criteria&nbsp;for which records you want to bring through, you can select the advanced options button to&nbsp;get access to the&nbsp;various fields which let you filter the data, but if you want to bring through&nbsp;all of&nbsp;your records, leave these fields blank&nbsp;instead.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-5-doing-the-flow-right-with-variables\">Step 5:\u00a0Doing the Flow Right with Variables\u00a0<a href=\"https:\/\/crmcs100.sharepoint.com\/sites\/IngkaAssetManagement\/SitePages\/Using-Power-Automate-to-synchronise-a-SQL-Back-End-to-Dataverse-Front-End.aspx?web=1&amp;OR=Teams-HL&amp;CT=1638372066473#step-5-doing-the-flow-right-with-variables\"><\/a><\/h3>\n\n\n\n<p>Next, you can initialise a series of variables to be populated later in the flow. This step is optional, but it is recommended as it will help you manage and track&nbsp;the information which is required for&nbsp;the lookup fields and relationships later down in the flow.&nbsp;When initialising variables, it is important to give them all distinct names&nbsp;so that&nbsp;you do not set or call the wrong variable at the wrong time.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/crmcs100.sharepoint.com\/_api\/v2.1\/drives\/b!ett3tDwJkkiVkYkkgE3ffsNijSqWisFLlbJOggMCfn3Y3V8e7QYXSqpu3bqBnycO\/items\/014VZKWIBAFS3B3REVQ5B3VGD4S7OKTKA6\/thumbnails\/0\/c1600x99999\/content?preferNoRedirect=true&amp;prefer=extendCacheMaxAge&amp;clientType=modernWebPart\" alt=\"\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-6-avoiding-hard-coding-the-environments\">Step 6:\u00a0Avoiding\u00a0Hard-Coding\u00a0the Environments\u00a0<a href=\"https:\/\/crmcs100.sharepoint.com\/sites\/IngkaAssetManagement\/SitePages\/Using-Power-Automate-to-synchronise-a-SQL-Back-End-to-Dataverse-Front-End.aspx?web=1&amp;OR=Teams-HL&amp;CT=1638372066473#step-6-avoiding-hard-coding-the-environments\"><\/a><\/h3>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/crmcs100.sharepoint.com\/_api\/v2.1\/sites\/crmcs100.sharepoint.com,b477db7a-093c-4892-9591-8924804ddf7e,2a8d62c3-8a96-4bc1-95b2-4e8203027e7d\/lists\/1e5fddd8-06ed-4a17-aa6e-ddba819f270e\/items\/6156fc36-0729-412c-a670-eda51c8e33d1\/driveItem\/thumbnails\/0\/c1600x99999\/content?preferNoRedirect=true&amp;prefer=extendCacheMaxAge&amp;clientType=modernWebPart\" alt=\"\" \/><\/figure>\n\n\n\n<p>The next stage is&nbsp;used to retrieve configuration details. This step is important as it lets you call upon details for your&nbsp;flow&nbsp;stored&nbsp;within&nbsp;Dataverse&nbsp;which can&nbsp;be edited for&nbsp;each different&nbsp;environment.&nbsp;To ensure that not everything is done in just one&nbsp;flow, retrieving the configuration details is&nbsp;done in a&nbsp;child flow, and the results of this flow are returned as variables&nbsp;for the parent flow&nbsp;to use.&nbsp;<\/p>\n\n\n\n<p>The&nbsp;actions&nbsp;of this flow returns the details of the data stored in&nbsp;the configuration table&nbsp;(this works best if there is only one record&nbsp;in the table&nbsp;as it means you do not need to filter the table, and the correct details will always be returned), enters the data into the variable and then responds to the parent flow.&nbsp;In our example, we will be returning the email of the configuration user, as it will be important later down in the parent flow.&nbsp;<\/p>\n\n\n\n<p>This step avoids having to edit your Flows when exporting and importing into future Environments (such as the Test or Production Environments in your Release Cycle) &#8211; and keeps to good development practise regardless of working on a low-code or no-code platform like Power Automate.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-7-match-the-asset-from-sql-to-powerapps\">Step 7:\u00a0Match the Asset from SQL to PowerApps\u00a0<a href=\"https:\/\/crmcs100.sharepoint.com\/sites\/IngkaAssetManagement\/SitePages\/Using-Power-Automate-to-synchronise-a-SQL-Back-End-to-Dataverse-Front-End.aspx?web=1&amp;OR=Teams-HL&amp;CT=1638372066473#step-7-match-the-asset-from-sql-to-powerapps\"><\/a><\/h3>\n\n\n\n<p>Back in the parent flow, the next action you will need is an apply to each which uses the value of the Get Rows (V2) action; this ensures&nbsp;the flow cycles through each row returned from&nbsp;the SQL server and applies the same logic to each one.&nbsp;&nbsp;<\/p>\n\n\n\n<p>Then, you will need to create a&nbsp;list rows action which&nbsp;returns the&nbsp;asset&nbsp;details, as these details will be used to find the matching team later in the flow. In our example, each team is linked to an asset and the roles table&nbsp;contains an asset ID field.&nbsp;&nbsp;<\/p>\n\n\n\n<p>A filter is then used to return the unique GUID of each&nbsp;asset found&nbsp;which&nbsp;matches&nbsp;an&nbsp;asset ID brought from SQL.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/crmcs100.sharepoint.com\/_api\/v2.1\/sites\/crmcs100.sharepoint.com,b477db7a-093c-4892-9591-8924804ddf7e,2a8d62c3-8a96-4bc1-95b2-4e8203027e7d\/lists\/1e5fddd8-06ed-4a17-aa6e-ddba819f270e\/items\/2d236d60-c241-49e3-94d9-be37f95ec468\/driveItem\/thumbnails\/0\/c1600x99999\/content?preferNoRedirect=true&amp;prefer=extendCacheMaxAge&amp;clientType=modernWebPart\" alt=\"\" \/><\/figure>\n\n\n\n<p>This provision to update if existing, insert if not, is key to building a good integration \u2013 as we will avoid duplicating data if a pure insert is run&nbsp;multiple&nbsp;times.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-8-use-the-right-team\">Step 8:\u00a0Use the right Team\u00a0<a href=\"https:\/\/crmcs100.sharepoint.com\/sites\/IngkaAssetManagement\/SitePages\/Using-Power-Automate-to-synchronise-a-SQL-Back-End-to-Dataverse-Front-End.aspx?web=1&amp;OR=Teams-HL&amp;CT=1638372066473#step-8-use-the-right-team\"><\/a><\/h3>\n\n\n\n<p>Next, the results of the&nbsp;list&nbsp;assets action&nbsp;are used to filter the next list rows action&nbsp;using the owning team ID&nbsp;value. This second&nbsp;list rows action&nbsp;lists&nbsp;the teams which are linked to&nbsp;each&nbsp;asset&nbsp;found, and the unique GUID of this team is then recorded&nbsp;with a set variable action&nbsp;in&nbsp;one of the variables created earlier.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/crmcs100.sharepoint.com\/_api\/v2.1\/sites\/crmcs100.sharepoint.com,b477db7a-093c-4892-9591-8924804ddf7e,2a8d62c3-8a96-4bc1-95b2-4e8203027e7d\/lists\/1e5fddd8-06ed-4a17-aa6e-ddba819f270e\/items\/5c295738-b138-42a4-90cb-cbb929bd3eb3\/driveItem\/thumbnails\/0\/c1600x99999\/content?preferNoRedirect=true&amp;prefer=extendCacheMaxAge&amp;clientType=modernWebPart\" alt=\"\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-9-match-the-user-from-sql-to-powerapps\">Step 9:\u00a0Match the User from SQL to PowerApps\u00a0<a href=\"https:\/\/crmcs100.sharepoint.com\/sites\/IngkaAssetManagement\/SitePages\/Using-Power-Automate-to-synchronise-a-SQL-Back-End-to-Dataverse-Front-End.aspx?web=1&amp;OR=Teams-HL&amp;CT=1638372066473#step-9-match-the-user-from-sql-to-powerapps\"><\/a><\/h3>\n\n\n\n<p>The next step requires a third list rows action; this one is used to&nbsp;find&nbsp;the unique GUID&nbsp;of the users who need to be linked with their&nbsp;correct team.&nbsp;&nbsp;<\/p>\n\n\n\n<p>Before this action is included, it\u2019s important to note that this action requires the emails listed in the roles table in SQL&nbsp;to already have been created in&nbsp;Dataverse, which can be done through&nbsp;another flow.&nbsp;In order to return the details of the right user, a filter is used&nbsp;which matches the&nbsp;email&nbsp;from the roles table to the email stored in the&nbsp;users&nbsp;table.&nbsp;<\/p>\n\n\n\n<p>&nbsp;Then tThe unique GUID is&nbsp;then&nbsp;stored in one of the variables initialised earlier&nbsp;with another set variable action.&nbsp;&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/crmcs100.sharepoint.com\/_api\/v2.1\/sites\/crmcs100.sharepoint.com,b477db7a-093c-4892-9591-8924804ddf7e,2a8d62c3-8a96-4bc1-95b2-4e8203027e7d\/lists\/1e5fddd8-06ed-4a17-aa6e-ddba819f270e\/items\/2c96af11-d193-4b31-b628-c5c48b736c8f\/driveItem\/thumbnails\/0\/c1600x99999\/content?preferNoRedirect=true&amp;prefer=extendCacheMaxAge&amp;clientType=modernWebPart\" alt=\"\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-10-add-the-user-to-the-team-for-the-asset\">Step 10:\u00a0Add the User to the Team for the Asset\u00a0<a href=\"https:\/\/crmcs100.sharepoint.com\/sites\/IngkaAssetManagement\/SitePages\/Using-Power-Automate-to-synchronise-a-SQL-Back-End-to-Dataverse-Front-End.aspx?web=1&amp;OR=Teams-HL&amp;CT=1638372066473#step-10-add-the-user-to-the-team-for-the-asset\"><\/a><\/h3>\n\n\n\n<p>After this, a condition is used to check if any user has been found which matches the email&nbsp;from the roles table. If a matching user was not found, then an email is sent to the configuration user,&nbsp;with the email address&nbsp;which was identified with the child flow,&nbsp;warning them that an error has occurred.&nbsp;But if a matching user has been found, then a new row is created in the roles table using the information from the roles table in SQL.&nbsp;&nbsp;<\/p>\n\n\n\n<p>Then, uUsing the ID variables populated earlier in the flow,&nbsp;the relationship between the user and the team is created, adding the user into the correct team.&nbsp;<\/p>\n\n\n\n<p>If this Team has 1 or more Security Roles attached, this then immediately applies the&nbsp;permissions granted by that Role to the User who has just joined the Team \u2013 giving us a way for changes in SQL to define the Security Rights available in Power Apps.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/crmcs100.sharepoint.com\/_api\/v2.1\/sites\/crmcs100.sharepoint.com,b477db7a-093c-4892-9591-8924804ddf7e,2a8d62c3-8a96-4bc1-95b2-4e8203027e7d\/lists\/1e5fddd8-06ed-4a17-aa6e-ddba819f270e\/items\/5cfb5471-e810-4261-a33e-f61d857b7aed\/driveItem\/thumbnails\/0\/c1600x99999\/content?preferNoRedirect=true&amp;prefer=extendCacheMaxAge&amp;clientType=modernWebPart\" alt=\"\" \/><\/figure>\n\n\n\n<p><strong>NOTE:&nbsp;<\/strong>the Relate Rows Step in Power Automate uses an aspect of the OData Service that is called by a URL and so needs the destination URL included in the action.&nbsp; This means that we can find the URL of our&nbsp;PowerApps Environment \u2018hard-coded\u2019 in the Flow and so is an important aspect from step 6 to use Environmental Configuration and avoid the Flow being tied to a particular environment.&nbsp;<\/p>\n\n\n\n<p>This article on our site may be useful here:&nbsp;&nbsp;<a href=\"https:\/\/www.crmcs.co.uk\/content\/creating-a-flow-to-add-a-many-to-many-relationship.aspx\">https:\/\/www.crmcs.co.uk\/content\/creating-a-flow-to-add-a-many-to-many-relationship.aspx<\/a>&nbsp;<\/p>\n\n\n\n<p>As&nbsp;is this article from the Power Platform community:&nbsp;&nbsp;<a href=\"https:\/\/tattooedcrmgirl.com\/2019\/10\/30\/microsoft-flow-the-relate-records-action-demystified\/\">https:\/\/tattooedcrmgirl.com\/2019\/10\/30\/microsoft-flow-the-relate-records-action-demystified\/<\/a>\u200b\u200b\u200b\u200b\u200b\u200b\u200b&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"the-benefit\">The Benefit\u00a0<a href=\"https:\/\/crmcs100.sharepoint.com\/sites\/IngkaAssetManagement\/SitePages\/Using-Power-Automate-to-synchronise-a-SQL-Back-End-to-Dataverse-Front-End.aspx?web=1&amp;OR=Teams-HL&amp;CT=1638372066473#the-benefit\"><\/a><\/h3>\n\n\n\n<p>Today our solutions may comprise many Apps&nbsp;or Systems, particularly given the ease we can build new Canvas&nbsp;Apps connected to various sources of data.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p>Historically integrating these systems as a single solution could be an expensive and time-consuming job for a development team, often requiring a 3rd&nbsp;Integration Manager such as BizTalk or Scribe&nbsp;\u2013 Power Automate gives us a tool for this kind of low-code connection of data across the cloud that can be simpler, leaner and quicker to apply to our business problems.&nbsp;<\/p>\n\n\n\n<p>In this example, we see how a SQL Database of Assets and Stakeholders can be integrated into&nbsp;PowerApps&nbsp;so the people related to the Asset (often referred to as the Related Parties) are made available in PowerApps and set the right security&nbsp;permissions.&nbsp;<\/p>\n\n\n\n<p>Taking this one step further, we used this system to then push the security rights from\u00a0Dataverse\u00a0and into SharePoint so that the right\u00a0Users were able to view the SharePoint Site for that Asset \u2013 giving us a combined security solution between SQL, PowerApps and SharePoint to keep a unified view of security.\u00a0<\/p>\n\n\n\n<p><strong>FURTHER READING<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/www.crmcs.co.uk\/blog\/blog.aspx\" target=\"_blank\" rel=\"noreferrer noopener\"><span class=\"has-inline-color has-vivid-cyan-blue-color\">https:\/\/www.crmcs.co.uk\/blog\/blog.aspx<\/span><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article will take the scenario where we have a collection of data in SQL that we want to integrate into the\u00a0Dataverse\u00a0Database for use in PowerApps \u2013 focusing on how we can pass User Roles and Teams where we may need this data present to\u00a0help manage\u00a0security rights.\u00a0<\/p>\n","protected":false},"author":43,"featured_media":35,"comment_status":"open","ping_status":"open","sticky":true,"template":"","format":"standard","meta":{"_price":"","_stock":"","_tribe_ticket_header":"","_tribe_default_ticket_provider":"","_tribe_ticket_capacity":"0","_ticket_start_date":"","_ticket_end_date":"","_tribe_ticket_show_description":"","_tribe_ticket_show_not_going":false,"_tribe_ticket_use_global_stock":"","_tribe_ticket_global_stock_level":"","_global_stock_mode":"","_global_stock_cap":"","_tribe_rsvp_for_event":"","_tribe_ticket_going_count":"","_tribe_ticket_not_going_count":"","_tribe_tickets_list":"[]","_tribe_ticket_has_attendee_info_fields":false,"footnotes":""},"categories":[3],"tags":[],"class_list":{"0":"post-99","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-crm"},"featured_image_src":"https:\/\/blog.citrus-lime.com\/crmc\/wp-content\/uploads\/sites\/30\/2021\/11\/Dynamics-365-Consultancy.jpg","author_info":{"display_name":"jadesmith","author_link":"https:\/\/blog.citrus-lime.com\/crmc\/author\/jadesmith\/"},"_links":{"self":[{"href":"https:\/\/blog.citrus-lime.com\/crmc\/wp-json\/wp\/v2\/posts\/99","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.citrus-lime.com\/crmc\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.citrus-lime.com\/crmc\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.citrus-lime.com\/crmc\/wp-json\/wp\/v2\/users\/43"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.citrus-lime.com\/crmc\/wp-json\/wp\/v2\/comments?post=99"}],"version-history":[{"count":1,"href":"https:\/\/blog.citrus-lime.com\/crmc\/wp-json\/wp\/v2\/posts\/99\/revisions"}],"predecessor-version":[{"id":100,"href":"https:\/\/blog.citrus-lime.com\/crmc\/wp-json\/wp\/v2\/posts\/99\/revisions\/100"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.citrus-lime.com\/crmc\/wp-json\/wp\/v2\/media\/35"}],"wp:attachment":[{"href":"https:\/\/blog.citrus-lime.com\/crmc\/wp-json\/wp\/v2\/media?parent=99"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.citrus-lime.com\/crmc\/wp-json\/wp\/v2\/categories?post=99"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.citrus-lime.com\/crmc\/wp-json\/wp\/v2\/tags?post=99"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}