tag:blogger.com,1999:blog-102627182024-03-18T03:01:05.587+00:00Andy Wingate'Whoever wins in IT tends to win' -- Sir Clive WoodwardAndyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comBlogger154125tag:blogger.com,1999:blog-10262718.post-81999519837577680682024-03-16T13:00:00.007+00:002024-03-16T18:04:14.153+00:00Power up D365BC Power Automate Flows with API PagesThe opportunity to extend functionality in Dynamics 365 BC with Power Automate is huge. One of the most critical concepts for me is the general ability to trigger flows, based on certain events or simply on demand, perform a automated / semi- automated business process or approval and then write back the decision as a change to a record in BC.<div><br /></div><div>The standard set of API's are pretty great to get started on this - check out the docs here <a href="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/api-reference/v2.0/">API (v2.0) for Dynamics 365 Business Central - Business Central | Microsoft Learn</a></div><div><br /></div><div>However, sometimes the field you want is not defined or the record type has been added to the set yet. This can be a bit of a blocker. Thankfully you can create your own API very easily. This post is aimed at BC consultants who want to do just this using API pages.</div><div><br /></div><div>Here is a similar exercise from MSFT for reference <a href="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-develop-custom-api">Developing a custom API - Business Central | Microsoft Learn</a></div><div><br /></div><div>For this example below will create and publish a small extension that contains an API page to interact with the vendor table through OData web services. </div><div><br /></div><div>We will use VS code <a href="https://code.visualstudio.com/download">Download Visual Studio Code - Mac, Linux, Windows</a> and a few addons <a href="https://marketplace.visualstudio.com/items?itemName=ms-dynamics-smb.al">AL Language extension for Microsoft Dynamics 365 Business Central - Visual Studio Marketplace</a> & <a href="https://marketplace.visualstudio.com/items?itemName=andrzejzwierzchowski.al-code-outline">AZ AL Dev Tools/AL Code Outline - Visual Studio Marketplace</a></div><h2 style="text-align: left;">Getting started </h2><div><ul style="text-align: left;"><li>Create a new AL in VS code project by tapping F1, use the AL:Go! from the command pallet</li></ul><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpoOrUbAY_h81I3E5-j5CWPf-fSMxFIyzC318lhwiEIL_mdBstui4FZcnuETW_sxEWa_LVCKl5ZMDka-UsJ3VNtWAa84wz51XpI13K2XeFF-hQfIf9wGqgqHB83og53UQTqXJRUeprEKyK_bf_8YP-G30cvRR9nFOo27TRZx_0RhNzJBQJ2wUk/s1024/2024-03-16_10h55_31.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="768" data-original-width="1024" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpoOrUbAY_h81I3E5-j5CWPf-fSMxFIyzC318lhwiEIL_mdBstui4FZcnuETW_sxEWa_LVCKl5ZMDka-UsJ3VNtWAa84wz51XpI13K2XeFF-hQfIf9wGqgqHB83og53UQTqXJRUeprEKyK_bf_8YP-G30cvRR9nFOo27TRZx_0RhNzJBQJ2wUk/w640-h480/2024-03-16_10h55_31.png" width="640" /></a></div><div><ul style="text-align: left;"><li>Connect your project to a BC trial sandbox / CDX / other instance</li><li>You will need to have full admin access and SUPER permission granted </li></ul><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA84ctCHqx7UH9IqxOc9HzZA44-XodK1Ysntp25eSSUjlKB-3L47atP_cFRJk19hJn_El006iGXAC59AhVhfE72amS65UhGV70Nl2cOo-ijDcNp6jWWDISmJxmsSquE1oMqMStYpF6V0Dtb3aIx_Jjrth8pMqINRg-gzC0Wg6dv1zrpgzieLLf/s1016/2024-03-16_11h24_17.png"><img border="0" data-original-height="196" data-original-width="1016" height="124" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA84ctCHqx7UH9IqxOc9HzZA44-XodK1Ysntp25eSSUjlKB-3L47atP_cFRJk19hJn_El006iGXAC59AhVhfE72amS65UhGV70Nl2cOo-ijDcNp6jWWDISmJxmsSquE1oMqMStYpF6V0Dtb3aIx_Jjrth8pMqINRg-gzC0Wg6dv1zrpgzieLLf/w640-h124/2024-03-16_11h24_17.png" width="640" /></a></div><div><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh87fU7CCmGFPc9dReZItDBrHVV9NS9Z8RTg2RkzspSJGRYD-nr8wUiwMY7w0Zp1DobG5OUhKhhyphenhyphenzrKmVc3iObbG0W0IWpk3tMxRgwYr6aQst6FfMafeZ14WnGCiAQ4Mw5VKJTEC0FITsxvqjxJ6QACBuhyphenhyphenFgpfjWlm183bPivvZxONyzxEQLYx/s1261/2024-03-16_11h06_10.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="500" data-original-width="1261" height="254" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh87fU7CCmGFPc9dReZItDBrHVV9NS9Z8RTg2RkzspSJGRYD-nr8wUiwMY7w0Zp1DobG5OUhKhhyphenhyphenzrKmVc3iObbG0W0IWpk3tMxRgwYr6aQst6FfMafeZ14WnGCiAQ4Mw5VKJTEC0FITsxvqjxJ6QACBuhyphenhyphenFgpfjWlm183bPivvZxONyzxEQLYx/w640-h254/2024-03-16_11h06_10.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><span style="text-align: left;">Add a tenant definition line to the launch.json to define your tenancy ID, update the sandbox name if needed</span></td></tr></tbody></table><ul style="text-align: left;"><li>F1 > AL: Download Symbols </li></ul><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvUdhd6IeUpBCIPw-rfPfVD1s8ouc-mRKEHT_sdDA3g58n-XH8nFvht8hMmf_O-wCfHxjB_hwEosJZNwRmwMkZZZNgxoGcpzaYPsiwPK8eZ-vNC6ogoSVjmrl1hnniM4GUQAIfor8dJ9kQ5RhURd-5sbGlvbEs2JaVYY5x9_bu6c57QrYi1O0d/s1250/2024-03-16_11h29_09.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="335" data-original-width="1250" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvUdhd6IeUpBCIPw-rfPfVD1s8ouc-mRKEHT_sdDA3g58n-XH8nFvht8hMmf_O-wCfHxjB_hwEosJZNwRmwMkZZZNgxoGcpzaYPsiwPK8eZ-vNC6ogoSVjmrl1hnniM4GUQAIfor8dJ9kQ5RhURd-5sbGlvbEs2JaVYY5x9_bu6c57QrYi1O0d/w640-h172/2024-03-16_11h29_09.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><span style="text-align: left;">This action gets the source code / lists of objects from the sandbox you defined above</span></td></tr></tbody></table><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilK11Nx17GMCPEx7foc9gSlN_dmPmIa74tOc1NhPNqn2NGSGNTwR9QmQbcKSvat9gtzhGagkMRbEbiR2_LAU-s-PAaRXvqZ9WJaNRD-cfFy_Z0nG_5Ryd3bxNtI4bPsS_a3EnxQvHy7orReGzzk5ZQ1iP62kNfRPlVtVG3_PEaDoVIDEp1Doba/s1259/2024-03-16_11h28_32.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="768" data-original-width="1259" height="390" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilK11Nx17GMCPEx7foc9gSlN_dmPmIa74tOc1NhPNqn2NGSGNTwR9QmQbcKSvat9gtzhGagkMRbEbiR2_LAU-s-PAaRXvqZ9WJaNRD-cfFy_Z0nG_5Ryd3bxNtI4bPsS_a3EnxQvHy7orReGzzk5ZQ1iP62kNfRPlVtVG3_PEaDoVIDEp1Doba/w640-h390/2024-03-16_11h28_32.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The system will ask you to authenticate on the through the use of a one time code, paste the code into the web page it opens, and check the symbols downloaded ok back in VS code. You will need a login with SUPER permission set for this.</td></tr></tbody></table><h2 style="text-align: left;">Create an API page</h2><div>Now we are ready to make some new objects and deploy them to the sandbox as a DEV extension. </div><ul style="text-align: left;"><li>Use the AZ New AL file wizard, from the right click menu or command pallet, to start creating a new object of type PAGE</li></ul><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyKvGc6HGzP6H5DZ-wlR5haWJtU9H4skFLyr8oNQU3R5sz2t4juQ6xpVv9IpljuDF_5B5xUiUhr8BxWJ8FevusmXRDSTdsEBqIINKVaAfOX9C9CVf5QDvYJ4dQO1-AokdTBhJro93Zmobs3Eq6CC5VY8mIEA7XOnR0TxJNfXs9c-2gHVNsInaM/s1251/Screenshot%202024-03-16%20113629.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="111" data-original-width="1251" height="56" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyKvGc6HGzP6H5DZ-wlR5haWJtU9H4skFLyr8oNQU3R5sz2t4juQ6xpVv9IpljuDF_5B5xUiUhr8BxWJ8FevusmXRDSTdsEBqIINKVaAfOX9C9CVf5QDvYJ4dQO1-AokdTBhJro93Zmobs3Eq6CC5VY8mIEA7XOnR0TxJNfXs9c-2gHVNsInaM/w640-h56/Screenshot%202024-03-16%20113629.png" width="640" /></a></div><br /><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQWM8K8uP3yiepUMLKwMamIUF0_A_rrXMtvMppxsEEgaSNe1oH2uWVoVpx28qEgBlUi8-Jj3dGHHNb_nK1zaE1XEFkZnUJx7RQS7qCDXRSWoxKoeBeaytoCp06I3Jk-wwGNakN4J-SAwtHGmECRfSJSyZJoKrTwPRNQ8-gq8j-Z3u7TsYgbQzu/s617/2024-03-16_11h39_49.png"><img border="0" data-original-height="325" data-original-width="617" height="211" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQWM8K8uP3yiepUMLKwMamIUF0_A_rrXMtvMppxsEEgaSNe1oH2uWVoVpx28qEgBlUi8-Jj3dGHHNb_nK1zaE1XEFkZnUJx7RQS7qCDXRSWoxKoeBeaytoCp06I3Jk-wwGNakN4J-SAwtHGmECRfSJSyZJoKrTwPRNQ8-gq8j-Z3u7TsYgbQzu/w400-h211/2024-03-16_11h39_49.png" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBKNsalpD7rBYo810ga8YauJRVcUu9oq77DJEfvTm26UpAYLbCzPT52eLQHOKTdGSNSjOgejc1CHtbsiZYTpHwKAo2wMBsKhb3wYlYWIKEzNeo_WIBEwOJiaAkDFn0rWQwqVi4i54zy2BX9ISUtQrM8YEoDZ1Qujl0maw-o-SQOhdSy7P62YyH/s1039/2024-03-16_11h41_42.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="537" data-original-width="1039" height="330" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBKNsalpD7rBYo810ga8YauJRVcUu9oq77DJEfvTm26UpAYLbCzPT52eLQHOKTdGSNSjOgejc1CHtbsiZYTpHwKAo2wMBsKhb3wYlYWIKEzNeo_WIBEwOJiaAkDFn0rWQwqVi4i54zy2BX9ISUtQrM8YEoDZ1Qujl0maw-o-SQOhdSy7P62YyH/w640-h330/2024-03-16_11h41_42.png" width="640" /></a></div><div><ul style="text-align: left;"><li><b>Object Id</b>: Leave the suggestion and if you get stuck read this <a href="https://yzhums.com/21335/">Dynamics 365 Business Central: View the all object details (Type, ID, Name…) and find out what extension an object belong to without using VS Code | Dynamics 365 Lab (yzhums.com)</a></li><li><b>Object Name</b>: Use something sensible here, you can have spaces</li><li><b>Source Table Name</b>: Start typing to filter all the tables in BC, this is the single table that all the fields in you API will come from </li><li><b>Page Type</b>: Set to API</li><li><b>API Publisher</b>: this best defines an organisational level term </li><li><b>API Group</b>: this best defines the type of API</li><li><b>API Version</b>: Set a version number</li><li><b>Entity name</b>: what is defined by 1 row of the table ?</li><li><b>EntitySet Name</b>: what is the collective term for many rows ?</li></ul></div><div>Just to give a sneak peek on what the impact of those last few choices - this is how the API Page shows up in Power Automate, take not of the API Publisher, API Group, API Version and EntitySet Name. This may help you name the API page for best effect. </div><div> <div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI7x3OQqgNiz0aJqbOUEY9To5pmapPUax-Xkhtc461_IIDUHGSwCIYhM7ETJOp8E0jU03PATpCyBaK44URDJ7tnKGc-LhuqBeulb3RQ3-ZHi02GMwfe3XO_63IgmGZLF9A4TuZjA05p_iVQF8SPV8GesZOH4aPZ6P6m4_yvxX9MxQWxf5vgEJ5/s1092/2024-03-16_11h57_06.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="570" data-original-width="1092" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI7x3OQqgNiz0aJqbOUEY9To5pmapPUax-Xkhtc461_IIDUHGSwCIYhM7ETJOp8E0jU03PATpCyBaK44URDJ7tnKGc-LhuqBeulb3RQ3-ZHi02GMwfe3XO_63IgmGZLF9A4TuZjA05p_iVQF8SPV8GesZOH4aPZ6P6m4_yvxX9MxQWxf5vgEJ5/w400-h209/2024-03-16_11h57_06.png" width="400" /></a></div></div><div><br /></div></div><div>Back to the wizard - next we can pick which fields in include - or all them add. Naturally only add what you need! To test the performance I did add them all... </div><div><ul style="text-align: left;"><li>The API page can be used to read and write data. Flow fields like 'Balance' etc can be read, but naturally cannot be written to. If in a later flow you try to write to a flow field the process will fail.</li></ul></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHaexdKlO0_xCUgLy9QiBzW0LuFO_9OxqZKEUWCWO6QRnKSaC08K1OyQnC4YoJBU9SGJ6ZnyzbpYlLzTqC_10wyuFeStV6Y5W9V5B_a2pjWxOzIe0Ds1HvA7pT1_xNxmHQRB50vXcxM_0O3iM7tVYWrjKnF43SxgH5GU72S_D3QEyzEMQ9bAoq/s1037/2024-03-16_11h42_17.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="529" data-original-width="1037" height="326" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHaexdKlO0_xCUgLy9QiBzW0LuFO_9OxqZKEUWCWO6QRnKSaC08K1OyQnC4YoJBU9SGJ6ZnyzbpYlLzTqC_10wyuFeStV6Y5W9V5B_a2pjWxOzIe0Ds1HvA7pT1_xNxmHQRB50vXcxM_0O3iM7tVYWrjKnF43SxgH5GU72S_D3QEyzEMQ9bAoq/w640-h326/2024-03-16_11h42_17.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">If you do want things in a particular order, define it here, or tweak the code of the file that's created</td></tr></tbody></table><br />You can click finish as this point and review the new API page object that you have just created</div><div><br /></div><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6gsiIwpDRzcVsM0MAqe1KBAXUjKUje6927Guvz0EN4U40lyoNsF3YHhMOzOrEXgkxPcWuY0jVunXC8EXTLrnWs_gHtuZiZvMThYTU1Pbtr1I4MfOJldhKfshXD5dCB4mPeXl6AN1SUk-K2lmbXvsdQ8OO4nCYntTFtGqplkiIdn9AtA3ha2LU/s1284/2024-03-16_12h22_28.png"><img border="0" data-original-height="563" data-original-width="1284" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6gsiIwpDRzcVsM0MAqe1KBAXUjKUje6927Guvz0EN4U40lyoNsF3YHhMOzOrEXgkxPcWuY0jVunXC8EXTLrnWs_gHtuZiZvMThYTU1Pbtr1I4MfOJldhKfshXD5dCB4mPeXl6AN1SUk-K2lmbXvsdQ8OO4nCYntTFtGqplkiIdn9AtA3ha2LU/w640-h280/2024-03-16_12h22_28.png" width="640" /></a></div><br /><div><div>But before your API is available (as above) in Power Automate we need to publish the app to the sandbox</div><div><ul style="text-align: left;"><li>F1 > AL Publish (ok ctrl+F5)</li></ul><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUMP2RCWuz1WgBQewvuv_mUb4qLalfvX-yS4ZeyL5skVFExgHsgFeOy3KLTFNSHYVzWxDz_Zh90wkKYtruvs5T16L4TnC3nZjkWjNHg7iaQW9NIFpGYsMdrR0sQ8wYQZ6VxQM0dz3yAakaSQTlUMSR0WaETr1uVoYjcfIetDn_I0iF47JAR1ft/s1397/2024-03-16_12h01_59.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="280" data-original-width="1397" height="128" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUMP2RCWuz1WgBQewvuv_mUb4qLalfvX-yS4ZeyL5skVFExgHsgFeOy3KLTFNSHYVzWxDz_Zh90wkKYtruvs5T16L4TnC3nZjkWjNHg7iaQW9NIFpGYsMdrR0sQ8wYQZ6VxQM0dz3yAakaSQTlUMSR0WaETr1uVoYjcfIetDn_I0iF47JAR1ft/w640-h128/2024-03-16_12h01_59.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Publish without debugging will simply install / update the app on the sandbox and open BC for you on page 22 (that's what we asked it to do in launch.json)</td></tr></tbody></table><br /><div>Now the app is published ok</div></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw0bgX_SFj9r1kCeB0HlFhZFW0c0ot0UwVFcUpPDF8fwy0hQvvd6eT6Z6bnplQgkeIymU5hmArV6KNVxVeSZnJ0UHDTMSb5UAUOhgs16zc5doXiUTFP_S1Xi4hK32VTcVgK0wwGYCkIHbpcL0piScCSp7GfOnbSPVru-dWSB-AWAs_6Qi0DYy5/s1460/2024-03-16_12h00_53.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="830" data-original-width="1460" height="364" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw0bgX_SFj9r1kCeB0HlFhZFW0c0ot0UwVFcUpPDF8fwy0hQvvd6eT6Z6bnplQgkeIymU5hmArV6KNVxVeSZnJ0UHDTMSb5UAUOhgs16zc5doXiUTFP_S1Xi4hK32VTcVgK0wwGYCkIHbpcL0piScCSp7GfOnbSPVru-dWSB-AWAs_6Qi0DYy5/w640-h364/2024-03-16_12h00_53.png" width="640" /></a></div><br /><div>We can check the extension on the Extension Management page in BC. The App is published as Dev. as we pushed it directly from VS Code. When we did the publish you will notice the .app file was also added to the folder. This .app file can be used to upload the ext to any environment. When you do this its published as type PTE. </div><div><ul style="text-align: left;"><li>The main practical difference of PTE and Dev ext, is that PTE ext remain present when BC is updated. Dev ext are removed. </li></ul></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZakHW6ayP_x_woznvkjCKwGDlEiG5ZIOye6z8P7rBIeM_fyN9Xa0P7-moFYFkntFsgYe-bu-8BQKyrZHuIbFaTJNybsEl-aSXQfJ9rZB0JGI3veWOMRYm6BolCvP6MsE2Ehu4KXfrbwCSt7dzyuMzJGdpo-dPw6qTL_5DgOb1xTx18gJfdy7U/s1290/2024-03-16_12h06_07.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="314" data-original-width="1290" height="156" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZakHW6ayP_x_woznvkjCKwGDlEiG5ZIOye6z8P7rBIeM_fyN9Xa0P7-moFYFkntFsgYe-bu-8BQKyrZHuIbFaTJNybsEl-aSXQfJ9rZB0JGI3veWOMRYm6BolCvP6MsE2Ehu4KXfrbwCSt7dzyuMzJGdpo-dPw6qTL_5DgOb1xTx18gJfdy7U/w640-h156/2024-03-16_12h06_07.png" width="640" /></a></div><br /><div>Additionally, in a Power Automate flow that connects to a company in this envienment we will also now see our new API.</div><h2 style="text-align: left;">Writing data</h2><div>The API pages can be used to read and update records - the usual validation applies - but I now have access to all the fields I added during the API page creation (which was all of them!)</div><div><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEium21DcoTC_saaJf7AnvOXDH_gsxFvU0of2hdpFPtrf28XI2bfdp83DyAMgLiQ_4wZEgJu_efAUzFxQYvdMjMQJd3wNHspQHa0FXL5paUIfWtgva11vqmkfbA6kJyH9onnQcDMQlzk6i08RroSkhmNki8qBS_YdvZxBYT_uU7LB4l30uWORowj/s1099/2024-03-16_12h26_08.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="912" data-original-width="1099" height="532" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEium21DcoTC_saaJf7AnvOXDH_gsxFvU0of2hdpFPtrf28XI2bfdp83DyAMgLiQ_4wZEgJu_efAUzFxQYvdMjMQJd3wNHspQHa0FXL5paUIfWtgva11vqmkfbA6kJyH9onnQcDMQlzk6i08RroSkhmNki8qBS_YdvZxBYT_uU7LB4l30uWORowj/w640-h532/2024-03-16_12h26_08.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Naturally these parameters would be better set using variables from an earlier step in the flow, perhaps reading from a row in a sharepoint list, or from an ms form etc - in this simple example I've just hardcoded in some text. </td></tr></tbody></table><br /><div><br /></div><div>Save and test the flow</div><div><br /></div></div><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj30D2hDlOERIYBODwMUTXZAN5VDvJPLsx2917pa0tjggnKOEVvZ5haL0Be92LRvtlU1ZuqutgyLT2R4lG0Hz9lzcm4tYLu7GeWkukXvXmJtaaCChK6XKdz4ZBePuiIqtQq_E_nSC3OQnvOgiDOwd3NuARb_4kaR2aO6roiUWxGga9Sw2EkNK1W/s1136/2024-03-16_12h28_50.png"><img border="0" data-original-height="834" data-original-width="1136" height="470" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj30D2hDlOERIYBODwMUTXZAN5VDvJPLsx2917pa0tjggnKOEVvZ5haL0Be92LRvtlU1ZuqutgyLT2R4lG0Hz9lzcm4tYLu7GeWkukXvXmJtaaCChK6XKdz4ZBePuiIqtQq_E_nSC3OQnvOgiDOwd3NuARb_4kaR2aO6roiUWxGga9Sw2EkNK1W/w640-h470/2024-03-16_12h28_50.png" width="640" /></a></div><div><div class="separator" style="clear: both; text-align: center;"><br /></div>Over in BC - a new vendor as defined by the params I supplied:</div><div><br /></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhY4dTjOUdKGHdc_5mbcFZQO1dJPoqyRMvB_p7efoEoJqEIzdffJ0ojA_smvaK00eTDz1ZWMs_X49_zCjUuat0aBD-_ahP7VWtttvidl9P7XC7c8n65LgvAUVZNn8bt5fkhD9RwAUbrnlQGIiAtvbku_MoIm9JzwnwvaGL6c1UKB-EuEl3aIJZC/s1906/2024-03-16_12h33_06.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="863" data-original-width="1906" height="290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhY4dTjOUdKGHdc_5mbcFZQO1dJPoqyRMvB_p7efoEoJqEIzdffJ0ojA_smvaK00eTDz1ZWMs_X49_zCjUuat0aBD-_ahP7VWtttvidl9P7XC7c8n65LgvAUVZNn8bt5fkhD9RwAUbrnlQGIiAtvbku_MoIm9JzwnwvaGL6c1UKB-EuEl3aIJZC/w640-h290/2024-03-16_12h33_06.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Shows as created by the flow owner, who naturally would need a BC license</td></tr></tbody></table><br /><h2 style="text-align: left;">Reading data</h2></div><div>Data out - this API can also now be found in PowerBI for pulling out all the vendor data</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcUYcVOz-Qv9rkf9qbcmTLIo6T4EmceEuM4BIscr1WouG2hgfMbGSYNBDLXA3o4J8GjSdSoy1z_7qlqJDfoGDAwszoMyobXB_kBOQSawruTTZH4W6qOlfZDfilGafr3VLtAo3KzUGrPztBCkTwHvvJo45IniGBYpnPG1Id9Gl5rDoLvINC820w/s882/2024-03-16_12h37_30.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="702" data-original-width="882" height="510" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcUYcVOz-Qv9rkf9qbcmTLIo6T4EmceEuM4BIscr1WouG2hgfMbGSYNBDLXA3o4J8GjSdSoy1z_7qlqJDfoGDAwszoMyobXB_kBOQSawruTTZH4W6qOlfZDfilGafr3VLtAo3KzUGrPztBCkTwHvvJo45IniGBYpnPG1Id9Gl5rDoLvINC820w/w640-h510/2024-03-16_12h37_30.png" width="640" /></a></div><br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD7Rv5v-Ye-PYEmPr4U1NTtflJZUITaKhNNRQmfd7qd1c6ljxRgEBn6h8pkVSgfujRzxgssV1NA7r7S5HWO20QQlabpDkXss7h70noNMJxsVX2V0ld2Gk76fqvN1x1k1dq66Owloh6WgYLDoXbY4kI8OAgSU3iFbM5EX_02tPChVFtV2Xh_E64/s1322/2024-03-16_12h38_35.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1053" data-original-width="1322" height="510" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD7Rv5v-Ye-PYEmPr4U1NTtflJZUITaKhNNRQmfd7qd1c6ljxRgEBn6h8pkVSgfujRzxgssV1NA7r7S5HWO20QQlabpDkXss7h70noNMJxsVX2V0ld2Gk76fqvN1x1k1dq66Owloh6WgYLDoXbY4kI8OAgSU3iFbM5EX_02tPChVFtV2Xh_E64/w640-h510/2024-03-16_12h38_35.png" width="640" /></a></div><br /><div>Finally if you need the full end point URL of the API page - here is how to build it up - </div><div><br /></div><div>https://api.businesscentral.dynamics.com/v2.0/<tenant Id>/<environment name>/api/<API publisher>/<API group>/<API version>/companies(<company id>)/<EntitySetName></div><div><br /></div><div>So we have all of that, apart from the company name which you will need to look up in BC from the companies page - get the system Id guid</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG6SXBX9Z16xG9jnNov_PFHJl0NmiQ5UcaY7QC0t9zFY6NK-4FHUMx28mC_eYs-fgHSDslDZaA4jZrCcXrpUOBrmRi1MvYUA7yLe1i7LpiUgstFGHXgqoaMC9mX4qWtTxJTlkXKF7lG-w4VLJFO53mzHy8doQeWq9RXWt70bpE9C1rJFkGmsrL/s1406/2024-03-16_12h48_56.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="767" data-original-width="1406" height="350" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG6SXBX9Z16xG9jnNov_PFHJl0NmiQ5UcaY7QC0t9zFY6NK-4FHUMx28mC_eYs-fgHSDslDZaA4jZrCcXrpUOBrmRi1MvYUA7yLe1i7LpiUgstFGHXgqoaMC9mX4qWtTxJTlkXKF7lG-w4VLJFO53mzHy8doQeWq9RXWt70bpE9C1rJFkGmsrL/w640-h350/2024-03-16_12h48_56.png" width="640" /></a></div><br /><div><br /></div><div>Here is my API as a URL endpoint </div><div><br /></div><div>https://api.businesscentral.dynamics.com/v2.0/b1c26eb6-ffc0-4887-b427-234b2db89ac4/sandbox/api/andywingate/pa/v1.0/companies(7368d553-0c5c-ee11-8df4-6045bdc89477)/vendors</div><div><br /></div><div>Read more about URL formatting here <a href="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-develop-custom-api">Developing a custom API - Business Central | Microsoft Learn</a> & <a href="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/api-reference/v2.0/endpoints-apis-for-dynamics">Endpoints for the APIs for Microsoft Dynamics 365 Business Central - Business Central | Microsoft Learn</a></div><div><br /></div><div>Tested using an OData feed in PowerBI</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIZD-adFQkY0GqDVAENqNALsw1rDY5R9AM3tmCcR11BzXX24_yMBAvAhkhcMySlJYuqHsJmP7FhkIOm6VBOqc5erxCOXhxWJqaG-sd-O3ee2aZ-9438XyWJfNIDj3yVAd3prWHJXdbdqRTJHF9aY3bXujJ5E1IjEaenca-DmeCPLPkh6mwEttJ/s1902/2024-03-16_12h56_21.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1018" data-original-width="1902" height="342" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIZD-adFQkY0GqDVAENqNALsw1rDY5R9AM3tmCcR11BzXX24_yMBAvAhkhcMySlJYuqHsJmP7FhkIOm6VBOqc5erxCOXhxWJqaG-sd-O3ee2aZ-9438XyWJfNIDj3yVAd3prWHJXdbdqRTJHF9aY3bXujJ5E1IjEaenca-DmeCPLPkh6mwEttJ/w640-h342/2024-03-16_12h56_21.png" width="640" /></a></div><div><br /></div><div>Source code of the vendor table API page here <a href="https://github.com/andywingate/d365bc-api4pa">GitHub - andywingate/d365bc-api4pa</a></div><div><br /></div>That's it, give it a try!Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-10382258993682898332024-03-10T16:01:00.010+00:002024-03-16T10:19:38.749+00:00Dynamics 365 Business Central Mobile App - Add item pictures<p> A simple request from a recent launch. 'We want to add images of the items from the Lab, can we easily do this from the BC app on our phones?'</p><p>Yes you can! Here is how </p><p>Download and connect to BC on your phone</p><p></p><ul style="text-align: left;"><li><a href="https://apps.apple.com/us/app/dynamics-365-business-central/id1093325047">Dynamics 365 Business Central on the App Store (apple.com)</a></li><li><a href="https://play.google.com/store/apps/details?id=com.microsoft.dynamics.ProjectMadeira&hl=en&gl=US&pli=1">Dynamics 365 Business Central - Apps on Google Play</a></li></ul><div>Visit the items list - you can search for the pages now </div><div><br /></div><div>These screen shorts are from the Android version of the BC mobile app running on an emulated Pixel 5</div><div><br /></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg7s4sFA9VlarixR2Rgqk7Jxq4pt6wQs6Fj5Upap5GRj-FNXgA5NTmGcvN5Atvka7p0O10Oy5p_PaCFVoVycpoMni6sZEb-pP29xB_6Xa-4aOl_NYwTmQcjN2cW_xaJsqcRImvSqzZkJhzsqYq85VAY-ugZEVfySAqiTJK_RHZZbFt4NQm5NNOJ" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="755" data-original-width="529" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEg7s4sFA9VlarixR2Rgqk7Jxq4pt6wQs6Fj5Upap5GRj-FNXgA5NTmGcvN5Atvka7p0O10Oy5p_PaCFVoVycpoMni6sZEb-pP29xB_6Xa-4aOl_NYwTmQcjN2cW_xaJsqcRImvSqzZkJhzsqYq85VAY-ugZEVfySAqiTJK_RHZZbFt4NQm5NNOJ=w448-h640" width="448" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The Role Center on Mobile</td></tr></tbody></table><br /><br /></div><div><br /></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj_m0D6SkgLNimP7p5ReS9b-Ilc3PrzsegD8su-6ZkDrmEigK5U91GG4cw6Nj_QqpJudfu_41sbcwpg8pZbbKjzPMsHXG4AlRpokMwmOtKQ9YG3ZL__MH6_M6yRy8Fv2bId_H6O40usxWSLjNXiVBTCBXzeFx_Nu4JcNVCUYLvj92zRLT4qukjP" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="755" data-original-width="529" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEj_m0D6SkgLNimP7p5ReS9b-Ilc3PrzsegD8su-6ZkDrmEigK5U91GG4cw6Nj_QqpJudfu_41sbcwpg8pZbbKjzPMsHXG4AlRpokMwmOtKQ9YG3ZL__MH6_M6yRy8Fv2bId_H6O40usxWSLjNXiVBTCBXzeFx_Nu4JcNVCUYLvj92zRLT4qukjP=w448-h640" width="448" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Access the Items list via the menu or search function</td></tr></tbody></table><br /><br /></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi28c3DDRFERHNm6K9f112MXIiRw8ZoBzqKAcRQWvWd0D2XAo4SBBxx40j8b4nq-_NC7F6PUkeGGLbjCTZU7V6HBeUGZhsqtKsXkp1aNNmynGSDKJiYrbxNJulL5tQzyDxftPtsOsjalkdpppMPfsC6IIe5Sf6vfeyqc94yjAPzLDz1Sc-Ox8sO" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="755" data-original-width="413" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEi28c3DDRFERHNm6K9f112MXIiRw8ZoBzqKAcRQWvWd0D2XAo4SBBxx40j8b4nq-_NC7F6PUkeGGLbjCTZU7V6HBeUGZhsqtKsXkp1aNNmynGSDKJiYrbxNJulL5tQzyDxftPtsOsjalkdpppMPfsC6IIe5Sf6vfeyqc94yjAPzLDz1Sc-Ox8sO=w349-h640" width="349" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Pick the item you wish to update</td></tr></tbody></table><br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh5Bg8WoVeYk4kzcg7egauomzT27YoZRgbDJu24HeYbKrYxw5R9pUOA4MHL5wZOLCecbd7Z3m_dBoskOaZAEHKmNOS2azZnmKgyiWDxy6Rc-0ZoyWUji-8wK_ZSjWncKs25OFZ-_EYRU-Vywgg7ceTqUgzRUS22dnjfsJ_jG53H0yhsyWKE72pU" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="755" data-original-width="413" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEh5Bg8WoVeYk4kzcg7egauomzT27YoZRgbDJu24HeYbKrYxw5R9pUOA4MHL5wZOLCecbd7Z3m_dBoskOaZAEHKmNOS2azZnmKgyiWDxy6Rc-0ZoyWUji-8wK_ZSjWncKs25OFZ-_EYRU-Vywgg7ceTqUgzRUS22dnjfsJ_jG53H0yhsyWKE72pU=w349-h640" width="349" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Tap the title area - to access the Fact Box features</td></tr></tbody></table><br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhY4E7b4gBh9BBCuEbzdwDqi3Tk_JRKmre0zJc8y_9cUQ2WdO6paFT9id_-8o8V_Tz3XOJYoEOVze_1kdlJxpi8DXHlb7UukMMt7Bt-BuXPh5xehyWVVglxDY-aJxUIu9JZNOlOQQnFOXCWOyU9N4sKlzgAUsmjKdBcy6TwJKw0K3HNCrbeeZhT" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="755" data-original-width="413" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEhY4E7b4gBh9BBCuEbzdwDqi3Tk_JRKmre0zJc8y_9cUQ2WdO6paFT9id_-8o8V_Tz3XOJYoEOVze_1kdlJxpi8DXHlb7UukMMt7Bt-BuXPh5xehyWVVglxDY-aJxUIu9JZNOlOQQnFOXCWOyU9N4sKlzgAUsmjKdBcy6TwJKw0K3HNCrbeeZhT=w349-h640" width="349" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Tap the Picture caption and then Take from the menu to activate your phones camera.</td></tr></tbody></table><br />The system lets you review the image before you replace the current image. If you want to record more images, these can be added as attachments. The Picture image is the image that will display in the item list.</div><div><br /></div><div>That's it - very easy.</div><div><br /></div><div>If you waned to do a bulk upload of images instead that's also possible - <a href="https://learn.microsoft.com/en-gb/dynamics365/business-central/inventory-how-import-item-pictures">Importing Many Item Pictures from a ZIP File - Business Central | Microsoft Learn</a> </div><div><br /></div><div>For other image related requirements check out the amazing 'Dynamics 365 Lab' by Yun Zhu, as he has a number of different examples </div><div><br /></div><div><a href="https://yzhums.com/?s=picture">Search Results for “picture” | Dynamics 365 Lab (yzhums.com)</a></div><p></p>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-10572549866380415432024-02-18T17:16:00.010+00:002024-03-16T10:20:17.904+00:00Dynamics 365 BC - Reduce risk when applying the latest release wave update <p>Since 2018 we have seen 2 major updates for Dynamics 365 Business Central (BC) each year <a href="https://yzhums.com/45024/">History of Dynamics 365 Business Central/NAV | Dynamics 365 Lab (yzhums.com)</a>. </p><p>BC falls under the Modern Lifecycle Policy from Microsoft that basically states that customers must stay up-to-date (and be licensed to use the product, and Microsoft must support the product). <a href="https://learn.microsoft.com/en-us/lifecycle/policies/modern">Modern Lifecycle Policy - Microsoft Lifecycle | Microsoft Learn</a></p><p>The good news is that upgrading SaaS BC is a simple as a few clicks! And may only take a few minutes to complete. </p><p>However, the purpose of this article is to provide some guidance around how and when to do those few click that will upgrade your production system - to minimise the risk to your business operations!</p><h2 style="text-align: left;">When can I upgrade</h2><div>Microsoft detail the key dates and actions they recommend you take on this page <a href="https://aka.ms/BCUpdates">https://aka.ms/BCUpdates</a> - I would recommend reading that article before reading the rest of this blog post!</div><div><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2QrOncj2UwNqh8Jn-4OncqM2T8rUpxg3SzygFSTQMeI8rBZKatACoFBGs_3U0Gma6TcNZNJ1tbYQJpnMcqGPIZ4GOTWhAj2451OnqSBLE6_Q6FBu1PpYcqC6LKrprUaw5KH2fXtC0fhCkRREl95pmQCfDSMfEY1aUNqN4ZCR91CzxbiAz0Mqv/s1825/update-rollout-timeline.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="554" data-original-width="1825" height="194" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2QrOncj2UwNqh8Jn-4OncqM2T8rUpxg3SzygFSTQMeI8rBZKatACoFBGs_3U0Gma6TcNZNJ1tbYQJpnMcqGPIZ4GOTWhAj2451OnqSBLE6_Q6FBu1PpYcqC6LKrprUaw5KH2fXtC0fhCkRREl95pmQCfDSMfEY1aUNqN4ZCR91CzxbiAz0Mqv/w640-h194/update-rollout-timeline.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Upgrade cadence for the annual release waves 1 and 2</td></tr></tbody></table><br /><div><br /></div><div>Make sure your service desk or other suitable monitored inbox is added to the notifications list on the BC admin portal</div><div><br /></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8ZlsGgGuFWRPU_q4E__0ATjaI4vR1AXLHLF_BuwXNhz4nld67oY31DcvrG7ga17YOlLDEe-k09h0C0xnuBUKckX-XCFWcdYJA0hNTjbcz6TPb-S_NR064DE_78mgp35n285FqWs46iuVmV6FSJk0mKOqcer0o2ASLxE7FHjE9vpY0iNebh2mM/s1041/2024-02-17_19h25_47.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="391" data-original-width="1041" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8ZlsGgGuFWRPU_q4E__0ATjaI4vR1AXLHLF_BuwXNhz4nld67oY31DcvrG7ga17YOlLDEe-k09h0C0xnuBUKckX-XCFWcdYJA0hNTjbcz6TPb-S_NR064DE_78mgp35n285FqWs46iuVmV6FSJk0mKOqcer0o2ASLxE7FHjE9vpY0iNebh2mM/w640-h240/2024-02-17_19h25_47.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">You should check and add a suitable inbox to get BC system admin notifications </td></tr></tbody></table><br /><h2 style="text-align: left;"> Prepare for Updates</h2></div><div>Be sure to keep track of the upcoming features due to be released as part of the next release wave. Microsoft releases individual features throughout the release period. It's not uncommon for features to slip back into the next release. So don't 100% rely on a certain feature being available until you actually saw it on a sandbox!</div><div><br /></div><div>Microsoft keep us all updates as best they can on this matter the best resource to check out is the release planner. <a href="https://releaseplans.microsoft.com/en-us/?app=Business+Central">Microsoft Dynamics 365 - Release Plans</a> and the current release wave release plan <a href="https://aka.ms/BCReleasePlan">https://aka.ms/BCReleasePlan</a> </div><div><br /></div><div>Another way Microsoft help us prepare for any upcoming changes is by making Preview versions available to test in a Sandbox environment. <b>You should never run production operations on a preview version!</b> (Or a sandbox for that matter!) also the Preview environments get deleted after a few months.</div><div><br /></div><div>But you can create a demo company and do some basic testing of any new features that may affect your operations. <a href="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/administration/preview-environments">Prepare for major updates with preview environments - Business Central | Microsoft Learn</a></div><div><br /></div><h2 style="text-align: left;">Manage the Update</h2><div>When an update is ready for your Production environment here are a few recommendations to reduce risk. <b>Disclaimer: Always talk to your Microsoft Partner for their advice, this is generic advice with no knowledge of any matters specific to your circumstances!</b> </div><div><br /></div><h3 style="text-align: left;">Step 1: Delay Production Update </h3><div><ul style="text-align: left;"><li>When the update is available for production, first set the set update date for your <b>Production </b>environment as far forwards as possible. This will give you the maximum time to test the update in a Sandbox before it is automatically applied to Production. </li><li>Also put this date into your outlook calendar, share it with any team members, to raise awareness.</li><li>You can always change the date again if after testing you want to get cracking with the update and release those sweet new features to the users!</li></ul><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilJwyDFEXP0zGsAgXiiru8T0KaUeQgXmxegSWdwfwkVJ_Cw-hR1J577t0wrHBu1cTC956ad7MWmWjUN_Qkk1HmVtnRXGa2-kBUX2p__BiGqmlSz8zkCZhZglrJjmLp6iKkn_2sKPOaUFyGvpX11DtQX9rEYcsw8vn1zsS6coB1TXYqc1cqRZn2/s1593/2024-02-17_19h43_14.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="411" data-original-width="1593" height="166" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilJwyDFEXP0zGsAgXiiru8T0KaUeQgXmxegSWdwfwkVJ_Cw-hR1J577t0wrHBu1cTC956ad7MWmWjUN_Qkk1HmVtnRXGa2-kBUX2p__BiGqmlSz8zkCZhZglrJjmLp6iKkn_2sKPOaUFyGvpX11DtQX9rEYcsw8vn1zsS6coB1TXYqc1cqRZn2/w640-h166/2024-02-17_19h43_14.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The BC admin portal showing that I have some updates available on 2 of my environments</td></tr></tbody></table><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidMq3DdX-Q0VQbGqReL-PAnkhdXrHFUiYM_k-zvhW3lwTuMfaiXvZNyS4VGej0uNfN8OlZ2n0IEJ8vkV3-0Yzg5moz14BgNr9V-G0nO6QRRcwhBDEKj1MslswP9l5TEazjXHoOh0kqJ-QQIWCgrugnZOyfcD4o-sp8xvk3mpav2RiRtYLdVQJj/s1406/2024-02-17_19h43_24.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="794" data-original-width="1406" height="362" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidMq3DdX-Q0VQbGqReL-PAnkhdXrHFUiYM_k-zvhW3lwTuMfaiXvZNyS4VGej0uNfN8OlZ2n0IEJ8vkV3-0Yzg5moz14BgNr9V-G0nO6QRRcwhBDEKj1MslswP9l5TEazjXHoOh0kqJ-QQIWCgrugnZOyfcD4o-sp8xvk3mpav2RiRtYLdVQJj/w640-h362/2024-02-17_19h43_24.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">This environment is currently set to update on 26th Feb. Click Modify to update this date.</td></tr></tbody></table><br /><div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjWoUh_wrGoqv9gNsgNa4JVm00aa6Wkgd-dH_SXEWsw0UsLwZ7lw2UILse690lqcS-P5G854neReVl_v89raxuJJ6Jz6qL2hYfnI2C8fFP0HP748ReTu99_-yRL4rLXn5boJSs47XB1e5IlUmk0KU6t5REYMG0dY07EwZoJ-F0JTs5fKJbbLuRZ" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="830" data-original-width="562" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEjWoUh_wrGoqv9gNsgNa4JVm00aa6Wkgd-dH_SXEWsw0UsLwZ7lw2UILse690lqcS-P5G854neReVl_v89raxuJJ6Jz6qL2hYfnI2C8fFP0HP748ReTu99_-yRL4rLXn5boJSs47XB1e5IlUmk0KU6t5REYMG0dY07EwZoJ-F0JTs5fKJbbLuRZ=w435-h640" width="435" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The Schedule environment update dialog only allows you to delay for so long, here I picked the furthest away date it would let me. </td></tr></tbody></table><br /></div><div><h3>Step 2: Copy Production to a Sandbox, Update and test</h3></div></div><div>Now that we have some time, lets get on and test the update on a copy of our Production environment.</div><div><ul style="text-align: left;"><li>Ensure you have space to create 1 more Sandbox, then use the copy action on your Production environment page. </li><li>Once created, use the update modify set the Sandbox-copy-of-Prod to update right away. You can set the date to today and toggle the "Allow the update to run outside the update window". That will usually trigger the update to start in the next few mins.</li></ul><div>We are now at the 1st major checkpoint towards understanding if the update poses a risk to your Production operations. Because when trying to do the update, if any installed app or bespoke development would be broken by the update, the update will fail and the system will email you to say why.</div><div><br /></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgh-rnXWBBCVYEhPqbz8W4rKuuEE7T51zNFpWHvy7iEwjD9YA952BHqS0FUfSL3iTWbXm0t6cFxppBf5P6qiw3xTe2YuBzaoHCWq-zfKYPeJITOyUQyA7P5N7fRp6YE0CbJ66GlM5FlJyZ-ViFDiHZ3VTgAXZxsw39TLwtjXfGT6V9jHdlgTl5L" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="839" data-original-width="768" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEgh-rnXWBBCVYEhPqbz8W4rKuuEE7T51zNFpWHvy7iEwjD9YA952BHqS0FUfSL3iTWbXm0t6cFxppBf5P6qiw3xTe2YuBzaoHCWq-zfKYPeJITOyUQyA7P5N7fRp6YE0CbJ66GlM5FlJyZ-ViFDiHZ3VTgAXZxsw39TLwtjXfGT6V9jHdlgTl5L=w587-h640" width="587" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">An example of a failed update notification</td></tr></tbody></table><br />Review the operations logs for more details. Where a specific third party extension blocked the update you usually get a fair bit of info as to why, which will help the developer who created the extension resolve the matter.</div><div><br /></div><div>Assuming the update completed, now it's time to test your business processes in the sandbox. </div><div><ul style="text-align: left;"><li>Which processes should you test? </li><li>How long should you spend testing? </li></ul></div><div>These are important questions and must be decided by you / the operations teams / the business, your aim is to balance risk and effort. In an ideal world we would test every process end-to-end. In the real world we likely need to focus on the most important processes that would cause the greatest disruption if affected by the update.</div><div><ul><li>Carefully review the release plan, your highest priority should be any application areas that are important for your business and that you are actively using using.</li><li>Another very important area to review is the Feature Management page - in case there is an optional update that will become mandatory in the updated version. </li></ul><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj6eaW1ZUuppLiQmeiJ9NnaFoaDf5t6AS2WKEH09bfVx82DhJKscexyt_lozW1kDsGyG1PD5I0g4yfl1SXO3IpWAa1XItnWpbcPoMGVdWKyadiEF0DHuU4zrjnODXq76FHIrw1oXaj3Bx9vuq67HcQv0SaPhWiXYSARLbmBz9s5jpwkwBUZiymX" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="766" data-original-width="1846" height="266" src="https://blogger.googleusercontent.com/img/a/AVvXsEj6eaW1ZUuppLiQmeiJ9NnaFoaDf5t6AS2WKEH09bfVx82DhJKscexyt_lozW1kDsGyG1PD5I0g4yfl1SXO3IpWAa1XItnWpbcPoMGVdWKyadiEF0DHuU4zrjnODXq76FHIrw1oXaj3Bx9vuq67HcQv0SaPhWiXYSARLbmBz9s5jpwkwBUZiymX=w640-h266" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Feature Management allows you to try out new features in a Sandbox before making the change in Production</td></tr></tbody></table><br />You don't have unlimited time as the Production system will update in due course. If the test plan is discussed with the operations teams, documented, agreed and signed off you will be in a good position. You can never eliminate all risk!</div></div><div><br /></div><div>Once testing is completed if there are any issues then contact your Microsoft Partner for help to mitigate these. Might be you need a change of process and so on. Its fairly rate to come across issues </div><div><br /></div><div>If all is well, then you are in a position to update your production system. Communicate with your users, explain any changes they may see on the UI/UX etc, explain any new features that will be relevant for your users. </div><div><br /></div><div>It's best to do the update outside working hours as the system becomes unavailable during the update. You will know from the sandbox update how long the update should likely take! </div><div><br /></div><div>Revisit the admin portal and set the revise the update date as appropriate! Congratulations you have just upgraded your Production - Dynamics 365 Business Central application and released all the great new features to your users. </div><h2 style="text-align: left;">Final thoughts</h2><div>Some observations from the last few years of release waves. </div><div><ul style="text-align: left;"><li>You might decide to wait for the xx.1 or xx.2 minor update to be available before upgrading your Production system, unless there is a new feature you really must have. </li><ul><li>In the past there have sometimes been small bugs or issues in the initial version of the major release, these are then fixed in the next minor update that will come a month later or so.</li></ul><li>If any issues are found, Microsoft will pause the roll out of the update, if a pause is in effect there is usually a blue notification banner in the admin portal.</li><li>The upgrades are released over a period of weeks, don't be alarmed if the update is available for one environment but not another, just wait longer.</li></ul><div><br /></div></div></div>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-47748556295498346952024-02-03T12:43:00.007+00:002024-03-16T10:21:08.965+00:00Dynamics 365 BC - Transfer Environment - Tested & Timed<p> A new button on the top level BC admin portal menu is a rare event, on this post I run through the steps to test & time the transfer process.</p><p><a href="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/administration/tenant-admin-center-environments-move">Transfer an environment to another Microsoft Entra organization - Business Central | Microsoft Learn</a></p><h3 style="text-align: left;">Step 1: Initiate the transfer from source tenancy </h3><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkNGG63hyphenhyphenOuLeEWpjr6W4gUJnvXJIkge6CeTAyAa8m-PkLAKNvWA1yUZ_BEqR_Menj-VmmTTDeOwFUV6HeP7n29zpwTeq-L2QDixwCcbN-C5sAe20Q5BzBWC632hZULVa2DloatRyKhWhQbwBZMkad9XOtKOveImb2zYyuENZQlwUISnsubjKf/s1910/2024-02-03_11h59_06b.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="875" data-original-width="1910" height="294" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkNGG63hyphenhyphenOuLeEWpjr6W4gUJnvXJIkge6CeTAyAa8m-PkLAKNvWA1yUZ_BEqR_Menj-VmmTTDeOwFUV6HeP7n29zpwTeq-L2QDixwCcbN-C5sAe20Q5BzBWC632hZULVa2DloatRyKhWhQbwBZMkad9XOtKOveImb2zYyuENZQlwUISnsubjKf/w640-h294/2024-02-03_11h59_06b.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Initiation of environment transfer<br /><br /></td></tr></tbody></table><h3 style="text-align: left;">Step 2: Accept transfer on target tenancy </h3><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPxikp3BOXBZzbhyX7FTYH0itrjdTJTTMOLpyHKO_RAOEuyocyj6eehR5xWCyFqtlFsHA2jtG9ih5aszgbo7vQHZaGhpU33Tn2wuPd1-aCZKJ2uoQruRr0KzkpEunMaLnNaumVYo54Ra87AzE45W6KGAjAPkuPaHj2MdCDs2QAlAbqMaxX1nfD/s1913/2024-02-03_11h59_28b.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1022" data-original-width="1913" height="342" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPxikp3BOXBZzbhyX7FTYH0itrjdTJTTMOLpyHKO_RAOEuyocyj6eehR5xWCyFqtlFsHA2jtG9ih5aszgbo7vQHZaGhpU33Tn2wuPd1-aCZKJ2uoQruRr0KzkpEunMaLnNaumVYo54Ra87AzE45W6KGAjAPkuPaHj2MdCDs2QAlAbqMaxX1nfD/w640-h342/2024-02-03_11h59_28b.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Accept incoming transfer</td></tr></tbody></table><br /><h3 style="text-align: left;">Step 3: Wait a moment</h3><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMVOA9JB-j5HOXI4VxxLJpI2AiRNkDAcf0XN_xSEbHm7K8rAtg4n1Kt4yu0yYcfS9FEfQLbltgk0Z1thFqPrGlFbR8IRVPy4asUXmF8Q47htyVjP3gt4TqJ1thu6ApoiCzq0EVVykAfrKt6pgzjsdwhnzWYhv07OXcBdfL4lCjqhPAdYzrp99G/s1534/2024-02-03_12h00_20m.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="524" data-original-width="1534" height="218" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMVOA9JB-j5HOXI4VxxLJpI2AiRNkDAcf0XN_xSEbHm7K8rAtg4n1Kt4yu0yYcfS9FEfQLbltgk0Z1thFqPrGlFbR8IRVPy4asUXmF8Q47htyVjP3gt4TqJ1thu6ApoiCzq0EVVykAfrKt6pgzjsdwhnzWYhv07OXcBdfL4lCjqhPAdYzrp99G/w640-h218/2024-02-03_12h00_20m.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The source tenancy will show the queued operation log</td></tr></tbody></table><br />In the time it too me to draft the above bit of this article the transfer had completed!<br /><br /><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhId9OpGG0AC7VigAD6u_RX5pu8D_wbu9ixQGyaNBdWBsuxzITSInUIzDiXNW4-Pew5FDfyxK8P3Bl_hhWsfbsKSj8YxX4Hzb4cuvCCmDHpJn2VrJh3XO0uSq2WoQNw_4RhXlLpXzNIRUnXy2UxksimUlveBzNQK6fx8iRFLojY5c3tC0-f6fa4/s1614/2024-02-03_12h12_24.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="520" data-original-width="1614" height="206" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhId9OpGG0AC7VigAD6u_RX5pu8D_wbu9ixQGyaNBdWBsuxzITSInUIzDiXNW4-Pew5FDfyxK8P3Bl_hhWsfbsKSj8YxX4Hzb4cuvCCmDHpJn2VrJh3XO0uSq2WoQNw_4RhXlLpXzNIRUnXy2UxksimUlveBzNQK6fx8iRFLojY5c3tC0-f6fa4/w640-h206/2024-02-03_12h12_24.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The target tenancy showing the creation of the transfer environment </td></tr></tbody></table><div><br /></div><div><br /></div><h3 style="text-align: left;">Step 4: Complete post transfer steps</h3></div><div><br /></div><div>All the old users remain visible but will have no access. In the past I have simply disabled these. </div><div><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim01OIi-P3iNjNGVf_lCHe_ZDnR2EXbqLiFRKaAS8GwUQCNmeyKWNhp9SbUtJ_vndVkJoJ3PJbaLY2_8QumWVuYaLPSRvdOPIrCIAK29HMlLMNdsa-Hm8tA6s46MJY-dQlgRdcbobvy4epj89JJ3m9_J__LnecZHnwSV21Hn1d8wyYRWoJfApD/s1391/2024-02-03_12h25_45b.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="409" data-original-width="1391" height="188" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim01OIi-P3iNjNGVf_lCHe_ZDnR2EXbqLiFRKaAS8GwUQCNmeyKWNhp9SbUtJ_vndVkJoJ3PJbaLY2_8QumWVuYaLPSRvdOPIrCIAK29HMlLMNdsa-Hm8tA6s46MJY-dQlgRdcbobvy4epj89JJ3m9_J__LnecZHnwSV21Hn1d8wyYRWoJfApD/w640-h188/2024-02-03_12h25_45b.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The Admin accounts old tenancy (red) / new tenancy (green)</td></tr></tbody></table><div><ul style="text-align: left;"><li>I did need to create a brand new admin account and grant the Azure role "Dynamics 365 Admin" as the existing admin account on the tenancy didn't get granted the SUPER permission for some reason. </li><li>Then I was able to run the Update Users action</li></ul></div><div>You will need to check and add the security groups on the new tenancy, even if they are named the same, since BC tracked them by the GUID they will likely need to be removed and re-added from the BC Security Groups page. The page warns you with a notification bar.</div><div><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDvs6SZtx86lHSAYNsx9v8Badoiczd7oHM2yxeudkfUj-GyqOVW2lvqpOMZ5iwMCFsjWLZBAZ-ng5D8GGB8O21vka2RbQ_kY29vFzd0zVOaPe75P_BysM0DGBQTgvQRsqLI_08Vs5-jSJF3imrz1c5wj8_Kv2UwYzX64otYVjPJChH93nmWZbM/s1371/2024-02-03_12h33_07.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="852" data-original-width="1371" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDvs6SZtx86lHSAYNsx9v8Badoiczd7oHM2yxeudkfUj-GyqOVW2lvqpOMZ5iwMCFsjWLZBAZ-ng5D8GGB8O21vka2RbQ_kY29vFzd0zVOaPe75P_BysM0DGBQTgvQRsqLI_08Vs5-jSJF3imrz1c5wj8_Kv2UwYzX64otYVjPJChH93nmWZbM/w640-h398/2024-02-03_12h33_07.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Adding the new Azure Security Groups on the new tenancy in BC</td></tr></tbody></table><br /><h3 style="text-align: left;">In summary</h3><div>Overall 5 stars to the Microsoft team that implement this new feature - its very easy to use and FAST. </div><div><br /></div><div>In the past needing partner DAP/GDAP Global Admin access on both tenancies to request the transfer was a major issue!</div><div><br /></div><div><br /></div><br />Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-24719709929741452852023-12-09T12:40:00.004+00:002024-03-16T10:21:31.454+00:00Dynamics 365 BC - Architecture and Compliance <p>I am often asked to about the architecture and compliance for Business Central SaaS. There is a huge amount of info to be found on this topic across multiple Microsoft docs pages.</p><p>Below I have collected together a few handy links and images from these pages.</p><h2 style="text-align: left;">Architecture </h2><div><div>Here is a simple diagram of the Business Central Architecture <a href="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/deployment/product-and-architecture-overview">Component and System Topology - Business Central | Microsoft Learn</a> </div><div><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/media/architecture-overview.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="482" data-original-width="653" height="482" src="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/media/architecture-overview.png" width="653" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Figure 1 - BC system architecture simplified overview<br /></td></tr></tbody></table><div><br /></div><div><div>With BC SaaS direct access is not possible to any of the elements shown in the grey box as these are all managed by, and are the responsibility of, Microsoft.</div><div><ul style="text-align: left;"><li>Web Servers</li><li>Application Servers </li><li>SQL Databases</li></ul><h2 style="text-align: left;">Data Protection</h2><div>On the SaaS platform your data is treated in the following manner <a href="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/security/security-online">Security in Business Central - Business Central | Microsoft Learn</a></div></div></div></div><div><br /></div><div>Here is a simplified view of the authentication layers to access the application <a href="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/security/security-application">Layered security model in Business Central - Business Central | Microsoft Learn</a></div><div><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/media/security-overview.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="480" data-original-width="646" height="480" src="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/media/security-overview.png" width="646" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Figure 2 - BC uses a layered approach to application security</td></tr></tbody></table><div><br /></div><div><h3 style="text-align: left;">Authentication</h3><div>Business Central uses Microsoft Entra ID (previously known as Azure Active Directory) as the authentication method, which is automatically set up and managed for you. You can apply further layers of control with Azure Conditional Access policies. <a href="https://learn.microsoft.com/en-us/entra/identity/conditional-access/overview">What is Conditional Access in Microsoft Entra ID? - Microsoft Entra ID | Microsoft Learn</a></div></div><div><h3 style="text-align: left;">Data isolation and encryption</h3><div>Data belonging to a single tenant is stored in an isolated database and is never mixed with data from other tenants. This ensures complete isolation of data in day-to-day use and in backup/restore scenarios. Furthermore, Business Central uses encryption to help protect tenant data in the following ways:</div><div><ul style="text-align: left;"><li>Data at rest is encrypted by using Transparent Data Encryption (TDE) and backup encryption.</li><li>Data backups are always encrypted.</li><li>All network traffic inside the service is encrypted by using industry-standard encryption protocols.</li></ul><h3 style="text-align: left;">Software as a Service - Shared Responsibility Model</h3></div></div><div>Using business central as a Software as a Service (SaaS), brings the following changes to the responsibilities for these elements shown in Figure 1 vs a traditional on-prem deployment <a href="https://learn.microsoft.com/en-us/azure/security/fundamentals/shared-responsibility">Shared responsibility in the cloud - Microsoft Azure | Microsoft Learn</a></div><div><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkt1uRYHE53YaWTrjH2wYvfNn8TF226iQlWeMSmG9169KkgwHoLeHk3NoCaYsAA8rRg6-oR3qIVsRVIBDZANCoD4jGV6vuIk9d2JnPKdfzBljGdgaSRA9ib7RzbpCLPUGuimmiluMCxKyAEBb1CpCZ9FOLM4jjBiy9GVdf_X15Ds17vZCZxaBf/s666/shared-responsibility.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="393" data-original-width="666" height="378" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkt1uRYHE53YaWTrjH2wYvfNn8TF226iQlWeMSmG9169KkgwHoLeHk3NoCaYsAA8rRg6-oR3qIVsRVIBDZANCoD4jGV6vuIk9d2JnPKdfzBljGdgaSRA9ib7RzbpCLPUGuimmiluMCxKyAEBb1CpCZ9FOLM4jjBiy9GVdf_X15Ds17vZCZxaBf/w640-h378/shared-responsibility.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Figure 3 - The SaaS shared responsibility model</td></tr></tbody></table><div><br /></div><h2 style="text-align: left;">Compliance and Regulatory </h2><div><div>Here is a link to some other relevant information regarding the BC SaaS application & service compliance :</div><div><ul style="text-align: left;"><li>Security in Business Central <a href="https://aka.ms/BCSecurity">https://aka.ms/BCSecurity</a></li><li>Business Central - Application Compliance <a href="https://aka.ms/BCAppCompliance">https://aka.ms/BCAppCompliance</a></li><li><a href="https://learn.microsoft.com/en-us/dynamics365/business-central/compliance/compliance-service-compliance">Service Compliance and SLA - Business Central | Microsoft Learn</a></li><li>External Compliance Listing, refer to Dynamics 365 Business Central column <a href="https://aka.ms/d365-compliance-list">https://aka.ms/d365-compliance-list</a></li><li><a href="https://learn.microsoft.com/en-us/compliance/assurance/assurance-vulnerability-management">Threat and vulnerability management - Microsoft Service Assurance | Microsoft Learn</a></li></ul></div></div><div><br /></div><div><br /></div>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-70576337528748323812023-12-07T21:22:00.004+00:002024-03-16T10:21:50.311+00:00Easily search your all of your company data in Dynamics 365 BC<p>Here is a very nice feature that's been in Preview for some time, but is now even more accessible. Of course I'm talking about the Search Company Data tool. </p><p>This allows you to select a number of tables/field and do a full text search on those fields.</p><p>Very handy when you have an odd looking document number or a contact email and you are just not sure what it could be related to and you just want to search it all to find an answer.</p><p></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjE-DJyE40Y5VFEC1EiaisMyixNlef79xWgxkxLS4Dq1SKEEmJTPj80T0H5DY6DIY_99TlaSQU35S3yti-czpg_n7X1zedlf_56eW1lCSIBDrp_deOsw588K9ugU0ueAfLIbwuF2OhC33xIoZ24-uuRSxTQ2WEcgoZfOd4vds-Mx8z9joHZwJ0R" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="255" data-original-width="1492" height="55" src="https://blogger.googleusercontent.com/img/a/AVvXsEjE-DJyE40Y5VFEC1EiaisMyixNlef79xWgxkxLS4Dq1SKEEmJTPj80T0H5DY6DIY_99TlaSQU35S3yti-czpg_n7X1zedlf_56eW1lCSIBDrp_deOsw588K9ugU0ueAfLIbwuF2OhC33xIoZ24-uuRSxTQ2WEcgoZfOd4vds-Mx8z9joHZwJ0R" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Search in data - previously hidden away as only an action on the Business Manager role center</td></tr></tbody></table><br />Now in 2023 release wave 2 - search company data can be more easily found at the bottom of the Tell Me search results <p></p><p></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjvExKt1P0HvTvrLVlrNpf52dhnXCy5-_lG38kPzZDQBKaA2wkYw5u4LQu984XfI98sf8ri36WH8p3TOqQ6W9MSt0toh0nQI1w_TULDkppMxpEwxg-d9GOQ5c7f0rkFE2z-BV8KgO9Bdx02v0J8ruKlmstpnpbJkWq8rZGl5oPN-Q5lLmzIijNF" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="381" data-original-width="676" height="180" src="https://blogger.googleusercontent.com/img/a/AVvXsEjvExKt1P0HvTvrLVlrNpf52dhnXCy5-_lG38kPzZDQBKaA2wkYw5u4LQu984XfI98sf8ri36WH8p3TOqQ6W9MSt0toh0nQI1w_TULDkppMxpEwxg-d9GOQ5c7f0rkFE2z-BV8KgO9Bdx02v0J8ruKlmstpnpbJkWq8rZGl5oPN-Q5lLmzIijNF" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Search Company Data - now showing on the Tell Me results<br /></td></tr></tbody></table><br />So in this example I had a Mr Deberry leave a short message and to get back to him asap! But I'm new at the company maybe I don't know who he is etc. No problem with the Search Company data action:<p></p><p></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhIfj-dGorWYjdJK0-XvvD_yX5WDBHwH8plYFo3g6O75Ne4SqY2uoKGbqoEL5C0l3oBSfaD6OUsbRKCmP6Ydd42TVGrjQDoFcA6b47tzbl34-CyiZxaBx_Owd3jKoalpMNN9OBJ_kpQmeEjKy2rKKrVtR1Pv_zRlLUzH-c17_GYwlQTjvGnGP9w" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="644" data-original-width="979" height="211" src="https://blogger.googleusercontent.com/img/a/AVvXsEhIfj-dGorWYjdJK0-XvvD_yX5WDBHwH8plYFo3g6O75Ne4SqY2uoKGbqoEL5C0l3oBSfaD6OUsbRKCmP6Ydd42TVGrjQDoFcA6b47tzbl34-CyiZxaBx_Owd3jKoalpMNN9OBJ_kpQmeEjKy2rKKrVtR1Pv_zRlLUzH-c17_GYwlQTjvGnGP9w" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The search found the name from the Contacts table and referenced on a number of documents </td></tr></tbody></table><p></p><p>The base setup includes a limited number of tables and fields, presumably to keep the performance up. But if you did want to include more its just a few clicks. </p><p></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgBXGvH6HEwMeCM3tqIp81uxiFRB1aLH6rGJVx9xKHsYDZkBQF9l6-I91qCUCMvxJdQ0kk0psNlIETJUjvauIwkCAe0EgH58q5vsHDgNWHw4S5sRJRYwzWKzNQMzHqJ8PcG11ouBBPDqTF9zCzMDh6lic0OTLUF5ohTHAhdPlRpk4nUHjI028IS" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="417" data-original-width="657" height="203" src="https://blogger.googleusercontent.com/img/a/AVvXsEgBXGvH6HEwMeCM3tqIp81uxiFRB1aLH6rGJVx9xKHsYDZkBQF9l6-I91qCUCMvxJdQ0kk0psNlIETJUjvauIwkCAe0EgH58q5vsHDgNWHw4S5sRJRYwzWKzNQMzHqJ8PcG11ouBBPDqTF9zCzMDh6lic0OTLUF5ohTHAhdPlRpk4nUHjI028IS" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Setup where to search by clicking the action!</td></tr></tbody></table><br />Here I have added the Purchase Invoices list and checked the Vendor Invoice number / Vendor order number to also be included - as this will really help the AP team when dealing with queries from vendors - as they can easily search with the Vendors reference across all posted and unposted vendor invoices on the system.<p></p><p><br /></p><p></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgXcmRuJHFPO5gefAaGLdbBUh1HeAo1snv-X4WY624WRXEd8ikOlme4i1-qR01QXrJlJcIcTtUr98WCBlsuQKXK9Y8muq5pVmbzZn6F5m4oZP2lCQyIUxxgBu3xLQz6n0mPFYOGkAddDhI7aBt0LowsaSrPH-nGyyhp5YFY3DqtBesxeVQwcToj" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="813" data-original-width="895" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEgXcmRuJHFPO5gefAaGLdbBUh1HeAo1snv-X4WY624WRXEd8ikOlme4i1-qR01QXrJlJcIcTtUr98WCBlsuQKXK9Y8muq5pVmbzZn6F5m4oZP2lCQyIUxxgBu3xLQz6n0mPFYOGkAddDhI7aBt0LowsaSrPH-nGyyhp5YFY3DqtBesxeVQwcToj" width="264" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Toggle and search to add new tables to the search list</td></tr></tbody></table><br /><p></p><p></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgTkPp8roKeTsft7fOSSz6P1KZQAMkdd8pQuFB7mlksMxrknv11F0Bktca_jeE2zljwLyLVY7o46ObuwJEjZ0pJBhQlhfMr8IL2wQv5Dv1uQytOIVeFzQy_atRVyWDKMZAJk-kppKz94NpkW4LvBT5qn8iL874_UiIpFmA41WYZVOb7JMiHXRLu" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="803" data-original-width="893" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEgTkPp8roKeTsft7fOSSz6P1KZQAMkdd8pQuFB7mlksMxrknv11F0Bktca_jeE2zljwLyLVY7o46ObuwJEjZ0pJBhQlhfMr8IL2wQv5Dv1uQytOIVeFzQy_atRVyWDKMZAJk-kppKz94NpkW4LvBT5qn8iL874_UiIpFmA41WYZVOb7JMiHXRLu" width="267" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Click on the table to setup which fields you will search</td></tr></tbody></table><br />The list of tables and field you can search is tied to your role center - so again for performance, maybe you want to add Vendor stuff for the AP users and rather Customer tables fields for AR users.. <br /><br />Very handy! Give it a try! Which fields will you search for?<br /><p></p>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-92111853730137718932023-10-22T11:07:00.011+00:002024-03-16T10:22:21.015+00:00Dynamics 365 Business Central and Large Data Sets <h1>How Big is Big? The Challenge of Handling Over 5 Million Records</h1><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEigvUd-3NFGus4s6QflLG3VRqJr7BELTr2GyD9bkrUsNrGa7r8HZ9ffcgqqzqbn6quo1bJGMT8SsVzBFheL0i6b6iNEN7fqUf4ZPZuOyd8CqYnXkRd3252oSqOKUO0skZkiEYFdvLN6LtKQm13AM34PVfegLI4RAqsDo1_2oNcIpzxnsvoQSnZd" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="182" data-original-width="731" height="80" src="https://blogger.googleusercontent.com/img/a/AVvXsEigvUd-3NFGus4s6QflLG3VRqJr7BELTr2GyD9bkrUsNrGa7r8HZ9ffcgqqzqbn6quo1bJGMT8SsVzBFheL0i6b6iNEN7fqUf4ZPZuOyd8CqYnXkRd3252oSqOKUO0skZkiEYFdvLN6LtKQm13AM34PVfegLI4RAqsDo1_2oNcIpzxnsvoQSnZd" width="320" /></a></div><br />When it comes to data migration, especially for large datasets, how big is too big? What if you're dealing with over 5 million records? This post explores the challenges and possible solutions for this predicament.</div>
<h2>Data Migration: Excel vs RapidStart</h2>
<p>Configuration Packages accept two types of files for data migration:</p>
<ol>
<li><strong>Excel</strong>: Created by exporting a template. It has a maximum row limitation of 1,048,576.</li>
<li><strong>RapidStart</strong>: Also created by exporting a package, but appears to be a type of archive file.</li>
</ol>
<p>So, if we need to import or export more than approximately 1 million records, what do we do?</p>
<h2>The RapidStart Solution</h2>
<p>After some investigation, it turns out that RapidStart files are essentially gzipped XML files. This opens up the possibility of using these files as an alternative to Excel.</p>
<h2>Learning LINQ to XML</h2>
<p>To explore this further, I dabbled in LINQ to create XML files from CSV. I followed the tutorials on Microsoft Learn, specifically "<a href="https://learn.microsoft.com/en-us/dotnet/csharp/tutorials/working-with-linq">Working with LINQ - C#</a>" and "<a href="https://learn.microsoft.com/en-us/dotnet/standard/linq/linq-xml-overview">Overview - LINQ to XML - .NET</a>".</p>
<p>With some help from ChatGPT for coding, I developed two programs:</p>
<ol>
<li>The first program converts a CSV lists of Fixed Assets records into a RapidStart package.</li>
<li>The second program exports all table data from any RapidStart package into a series of CSV files.</li>
</ol>
<p>Both programs' source code can be found on GitHub:</p>
<ul>
<li><a href="https://github.com/andywingate/Create-RapidStart">Create-RapidStart</a></li><li><a href="https://github.com/andywingate/Plunder-RapidStart">Plunder-RapidStart</a></li>
</ul>
<h2>A Guide for .NET C# Beginners</h2>
<p>If you're new to .NET C# (as I am), here's a very basic guide on how you can compile and use the source code:</p>
<ol>
<li>Install <a href="https://dotnet.microsoft.com/download">.NET</a> and <a href="https://code.visualstudio.com/">Visual Studio Code</a>.</li>
<li>Add the <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.PowerShell">PowerShell extension</a> for VS Code.</li>
<li>Open the terminal in VS Code, create a folder, navigate into the folder, and set up a sample project:</li></ol><pre><code>PS > md Hello-World
PS > cd .\Hello-World\
PS > dotnet new console
PS > code .<br /></code></pre>
<p>The last command will open VS Code to that project, you can then run the sample app:</p><pre><code>PS > dotnet run
</code></pre>
<p></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjQgzYBJMrq1Sdqt3ftUhQ93Vnq0TqEPdAk9HcLMnRxTsH6GXqMHZ3k2BbNDzw2UEm1UImhLIiJPhLWKH8LRdPsk39gUW4Q1DGqRiY92y_H3t_Lto7pNVp6f1C2d8psnfV2udJjFX48WfOIX-aHEJ_gYO6Ypq2I9UlsaFi6Orw9l1seJ5yAGttL" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="578" data-original-width="1024" height="181" src="https://blogger.googleusercontent.com/img/a/AVvXsEjQgzYBJMrq1Sdqt3ftUhQ93Vnq0TqEPdAk9HcLMnRxTsH6GXqMHZ3k2BbNDzw2UEm1UImhLIiJPhLWKH8LRdPsk39gUW4Q1DGqRiY92y_H3t_Lto7pNVp6f1C2d8psnfV2udJjFX48WfOIX-aHEJ_gYO6Ypq2I9UlsaFi6Orw9l1seJ5yAGttL" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Running the sample c# app from the PS terminal in VS Code</td></tr></tbody></table><p>To use the experimental apps I created simply replace the <code>Program.cs</code> source code with the code from GitHub, save the file, and run it again.</p>
<h2>Performance Metrics: Fixed Asset Processing Times</h2>
<p>Next, let's talk about the performance metrics. I conducted tests using 5k and 25k samples to calculate depreciation and journal posting times:</p>
<ul>
<li>For the 5k sample, the total processing time was 390 seconds, giving a per-record time of 78 ms.</li>
<li>For the 25k sample, the total processing time was 1897 seconds, with a per-record time of 75.9 ms.</li>
</ul><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiD_sVLJZ9CV4grB7RbdIu_DWjVVOAqOPBWHUj43Fhk5vebSynqP6FkrzA_SpEZEFE275SYw9dxc8yXO78_py-So3iLh0HUav6twMK2JMQtilQhWhhNlpqPf2FQBeAuoaN3WaAtedxpTnZnoSoUAUWxRVKzmwxzDBFM6bKNT5ouXFvBjbe6Q26K" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="407" data-original-width="641" height="203" src="https://blogger.googleusercontent.com/img/a/AVvXsEiD_sVLJZ9CV4grB7RbdIu_DWjVVOAqOPBWHUj43Fhk5vebSynqP6FkrzA_SpEZEFE275SYw9dxc8yXO78_py-So3iLh0HUav6twMK2JMQtilQhWhhNlpqPf2FQBeAuoaN3WaAtedxpTnZnoSoUAUWxRVKzmwxzDBFM6bKNT5ouXFvBjbe6Q26K" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Extrapolated Depreciation time in hrs for large list of Fixed Assets</td></tr></tbody></table><br /></div>
<h2>Future Considerations</h2>
<p>The journal posting time could potentially be reduced by not having a balancing line for each asset but using one balancing line for the entire batch. This optimization is something to explore in the future.</p>
<h2>What's Next?</h2>
<p>In the future, I'll be looking into using the Job Queue to manage these long-running tasks more efficiently.</p>
Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-23904083950264751662023-09-24T13:42:00.002+00:002024-03-16T10:22:55.845+00:00Exploring Power Automate and Business Central: Tell me if... Do you want to keep on top of things in Business Central?
<div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDq8RqZc3QbHQLiIQrSzEGkCQgP6JMTvzuWuZeOcg4Mg3wonrsU5FFoYB3jumaBwog8wJYMvJ-doF3iGHY9JLv72LMWCk427sCxbNc7Hbp8viDpfsEGw0IpIxGb_apcJdTtLRPu8m5GHLqRUcyOTjJKr6UqBRDDBCXW0KAUOUXjmYl4zJYAQoc/s1283/BC%20and%20Power%20automate%20image%20large%20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="395" data-original-width="1283" height="99" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDq8RqZc3QbHQLiIQrSzEGkCQgP6JMTvzuWuZeOcg4Mg3wonrsU5FFoYB3jumaBwog8wJYMvJ-doF3iGHY9JLv72LMWCk427sCxbNc7Hbp8viDpfsEGw0IpIxGb_apcJdTtLRPu8m5GHLqRUcyOTjJKr6UqBRDDBCXW0KAUOUXjmYl4zJYAQoc/s320/BC%20and%20Power%20automate%20image%20large%20.png" width="320" /></a></div><div><p>In this short post I'll be looking at the Find Records (V3) action and using it to meet the following business requirement:</p><p><b>Tell me if any of purchases haven't arrived in time. </b></p><p>In terms on the nitty gritty we do need to agreed on what this means in BC, so we will say if the following are all true - then we need to fire a notification.</p><p></p><ul style="text-align: left;"><li>The Purchase Order has a status of Released (Purchase header)</li><li>Quantity Received is less than the quantity ordered (Purchase line)</li><li>The Expected Receipt Date is in the past (Purchase line)</li></ul><p></p><p>For this approach we will use a Scheduled flow - as we just want to check all the PO's each day once <a href="https://learn.microsoft.com/en-us/power-automate/run-scheduled-tasks?tabs=classic-designer">Run flows on a schedule in Power Automate - Power Automate | Microsoft Learn</a>.</p><p>We need to evaluate some logic from the header and then the lines. It just so happens the Find Records (V3) API for purchase lines also requires us to pass it one PO header at a time. This just means we have 2 Apply to Each loops to deal with, first the PO header, then the lines.</p><h3 style="text-align: left;">Here is a look at each step</h3><p>Set the recurrence - once a day at 9am please...</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhitSnKYq6VsxT6a9yAnSVJ95AkB95oaLxlM7b5OVLcjkS0BWW4u7ysMkw8bawGDkXwARlq1CkekJlMlH6z5dVO3Gvb7Aw0CsoxP0AoWycTmYQN2duwORcR9r2pSW_H0rQVT55LIDCuEB8N5_v90z65pmog-qncdO3UiUlHxE6Ptk6uJNT_FD49" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="321" data-original-width="617" height="166" src="https://blogger.googleusercontent.com/img/a/AVvXsEhitSnKYq6VsxT6a9yAnSVJ95AkB95oaLxlM7b5OVLcjkS0BWW4u7ysMkw8bawGDkXwARlq1CkekJlMlH6z5dVO3Gvb7Aw0CsoxP0AoWycTmYQN2duwORcR9r2pSW_H0rQVT55LIDCuEB8N5_v90z65pmog-qncdO3UiUlHxE6Ptk6uJNT_FD49" width="320" /></a></div><p>Find all the Released PO's. A very nice gotcha in Power Automate is the status string. You need to use "Draft' for 'Open in BC' and 'Open' for 'Released in BC'. That's why I have status eq 'open' in the ODATA filter:</p><p></p><p></p><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhk3p5Xg1gLqN3eLlfBzdQAh4VVcSND2XmsR38_xjFhgQQqLXMXF8p6QWdJAc_96FO2z_DD5eaqz528yNV2TBaFGEdbj0UeDKv5QxRn92JtfLhYOWe4BxQWUHeYkDyvrJ7UZpE03KzVUYD1JkbIzowSPdbErB7Cn3YCEUIfkdY1PfCcjgHur87-" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="405" data-original-width="607" height="214" src="https://blogger.googleusercontent.com/img/a/AVvXsEhk3p5Xg1gLqN3eLlfBzdQAh4VVcSND2XmsR38_xjFhgQQqLXMXF8p6QWdJAc_96FO2z_DD5eaqz528yNV2TBaFGEdbj0UeDKv5QxRn92JtfLhYOWe4BxQWUHeYkDyvrJ7UZpE03KzVUYD1JkbIzowSPdbErB7Cn3YCEUIfkdY1PfCcjgHur87-" width="320" /></a></div></div><p>Now for each returned record we find the PO lines. Passing the "id" from the prior step into the Apply to each action. The purchaseOrderLines API demands that we only look up 1 PO at a time and we need to tell it which one - so I've passed the header id in the ODATA filter. </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjcyMQ-KkEbqI76RusrpKH7my56i8MH8KETik8P2VcBJ0ihGHj-LgXyBFxIM1k3tpE9uYbaTCy_VbgsX2ym37d1VSpV1t9mtQMQVpVVCCKt6Ps8H7FsJ1GPdljj-rJWrheY9gmzqs9Jvs7ULGGIAqAw9IO1QkVcMaNSCb1O7oQLLNd0-fznhIK1" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="539" data-original-width="641" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEjcyMQ-KkEbqI76RusrpKH7my56i8MH8KETik8P2VcBJ0ihGHj-LgXyBFxIM1k3tpE9uYbaTCy_VbgsX2ym37d1VSpV1t9mtQMQVpVVCCKt6Ps8H7FsJ1GPdljj-rJWrheY9gmzqs9Jvs7ULGGIAqAw9IO1QkVcMaNSCb1O7oQLLNd0-fznhIK1" width="285" /></a></div><p>Now is the next apply to each where I want to evaluate the how much is left to receive and if we are past the expected date yet. Its possible this could be done with the ODATA filter, but I've used a control condition as that seemed easer to me.</p><p>The Expected Receipt Date is in the format yyyy-MM-dd, so we should format the UTC time the same which you can do with an expression formatDateTime(utcNow(), 'yyyy-MM=dd').</p><p></p><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiXn26IwHiT8Knldfgc8ZwrDCY3YtVCsthdiUPx1aj-f-uM5ixFvbKELG6rOIR1t4UNtTYwMtEWpkoAi1virDEFSBWDhOmgWxZzhMdCpGxLo10SMfycnwc9-gTXddI4KlyvQEOQoSceU2zYjgIyhcAIpnfL0P_IxE5SB2myalHFQqZku3tzk4Ex" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="522" data-original-width="1344" height="124" src="https://blogger.googleusercontent.com/img/a/AVvXsEiXn26IwHiT8Knldfgc8ZwrDCY3YtVCsthdiUPx1aj-f-uM5ixFvbKELG6rOIR1t4UNtTYwMtEWpkoAi1virDEFSBWDhOmgWxZzhMdCpGxLo10SMfycnwc9-gTXddI4KlyvQEOQoSceU2zYjgIyhcAIpnfL0P_IxE5SB2myalHFQqZku3tzk4Ex" width="320" /></a></div><br /><br /></div>Finally for any rows where these conditions are both met lets fire a notification to the team! The whole reason for this was to make things quick an easy - so naturally we will give some context and a link to the users can get directly to the document in question <p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhSEuIYiFsl-SwqjWUvxY9ktzQFEKYA2Njes-y_S3RSb8XK8fhVlLcGnK0QnJxqBbIQTW2PP5nmRaZIMBPCmV3FowES_p7FLlPbA6871EWE6XjGmkZblTchJY99jRQ5gNgipC8Z57MN5QcA6e45NmI0tkcoPrQmtsjDD5rQ-ruvrmXneCNWCjtc" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="897" data-original-width="650" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEhSEuIYiFsl-SwqjWUvxY9ktzQFEKYA2Njes-y_S3RSb8XK8fhVlLcGnK0QnJxqBbIQTW2PP5nmRaZIMBPCmV3FowES_p7FLlPbA6871EWE6XjGmkZblTchJY99jRQ5gNgipC8Z57MN5QcA6e45NmI0tkcoPrQmtsjDD5rQ-ruvrmXneCNWCjtc" width="174" /></a></div><p>Over in teams, a bit spartan, but you get the idea..</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhIejb-5uesYXsnNiIWMCehEEunIcLAF7qn8AK8Okte-ujuPJlPF71SH8_5KkHJdNUdvAP46wgDpJuRYwPlTjGJaSJYg4UyQ0n1eC2-Wdt_MHUpaSQunJNBPrW7_ckrY3-Y23A0DlvZdCu1wsFqZDP8gfe-eiXOVegcnPJL48gp6SHe3cnGrSt_" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="348" data-original-width="945" height="118" src="https://blogger.googleusercontent.com/img/a/AVvXsEhIejb-5uesYXsnNiIWMCehEEunIcLAF7qn8AK8Okte-ujuPJlPF71SH8_5KkHJdNUdvAP46wgDpJuRYwPlTjGJaSJYg4UyQ0n1eC2-Wdt_MHUpaSQunJNBPrW7_ckrY3-Y23A0DlvZdCu1wsFqZDP8gfe-eiXOVegcnPJL48gp6SHe3cnGrSt_" width="320" /></a></div><br /><p><br /></p></div>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-16002436940596210892023-08-08T20:49:00.010+00:002024-03-16T10:23:10.429+00:00Exploring Business Events for Business Central: Customer Credit Limit<p>Do you want to easily automate responses to common events in your ERP? </p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhKyxIkAqbBDrb__4w1XWb1WvXVGtUl50305Lt4sBOEccRE4XIw4_QsQpv1sUxTuXOkVu1F-ztxtNcSMPUqDtWr1W19lJg8cqLV59wjzMEfh-es5rlCKG563SFfwXs7pL_rpPQOLNNiSUUHy4Tekl5vAp7zORWxXgQXnAV3EI8vZ8xR2R8o3JaU" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="329" data-original-width="1069" height="98" src="https://blogger.googleusercontent.com/img/a/AVvXsEhKyxIkAqbBDrb__4w1XWb1WvXVGtUl50305Lt4sBOEccRE4XIw4_QsQpv1sUxTuXOkVu1F-ztxtNcSMPUqDtWr1W19lJg8cqLV59wjzMEfh-es5rlCKG563SFfwXs7pL_rpPQOLNNiSUUHy4Tekl5vAp7zORWxXgQXnAV3EI8vZ8xR2R8o3JaU" width="320" /></a></div><p></p><p>With Business Events & Power Automate you can do just that in Business Central and other Dynamics 365 apps. <a href="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/business-events-overview">Business events on Business Central (preview) - Business Central | Microsoft Learn</a>.</p><p>In the most recent update Business Events can be used without any Dataverse setup making the toolset more accessible to all. </p><p>So what do we get at the moment you ask? Here is a list:</p><p></p><ul style="text-align: left;"><li>Customer blocked</li><li>Customer unblocked</li><li>Opportunity activated</li><li>Opportunity closed as lost</li><li>Purchase credit memo posted</li><li>Purchase invoice posted</li><li>Purchase order released</li><li>Purchase payment posted</li><li>Purchase receipt posted</li><li>Quote created for opportunity</li><li>Sales credit limit exceeded</li><li>Sales credit memo posted</li><li>Sales invoice posted</li><li>Sales order released</li><li>Sales payment posted</li><li>Sales shipment posted</li><li>Winning quote converted into sales order </li></ul><h3 style="text-align: left;">Sales credit limit exceeded</h3><div>Looking at the available list of events this one jumped out as its one of those events that happens usually between the sales team and finance. Sales stereotypically keen to get the sales on the system, finance with a more discerning eye on things like credit limits / credit insurance.</div><h4 style="text-align: left;">Setup the flow</h4><div>Could not be easier just 2 elements </div><div><ul style="text-align: left;"><li>When a business event occurs</li><li>Update record</li></ul><div>The Business Event trigger provides the CustomerID that can be fed into the Update record. As usual to find out the expected value to pass back I used Get Record to check what to send to set Blocked = All. In this case it was just "All".</div></div><div><br /></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjr4Jk3ASe_-aqJuPFqgsUBlOiil6eCulCHZ5DWhczPw6y_CT_i1NCNNz7qz7AcNCpMlqtPqqrJBkEmjZpZxtbYFL5RQApLxPOvhGj9YdrV3-PsEv2gZSvwVjK8RJhY8t3lcqv4qrojSXHSZv_-lRx0yKtHuOiNyH42vKGTdU23iwmo0cTfQpU8" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="849" data-original-width="1246" height="218" src="https://blogger.googleusercontent.com/img/a/AVvXsEjr4Jk3ASe_-aqJuPFqgsUBlOiil6eCulCHZ5DWhczPw6y_CT_i1NCNNz7qz7AcNCpMlqtPqqrJBkEmjZpZxtbYFL5RQApLxPOvhGj9YdrV3-PsEv2gZSvwVjK8RJhY8t3lcqv4qrojSXHSZv_-lRx0yKtHuOiNyH42vKGTdU23iwmo0cTfQpU8" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Power automate flow to block customers who exceed their credit limit</td></tr></tbody></table><h3 style="text-align: left;">Testing</h3></div><div>In Business Central there are a few different flavours of the Credit Limit. Let’s look at this for a moment to understand how the flow works.</div><div><br /></div><div><b>Customer Card Credit Limit</b></div><div><b><br /></b></div><div>The balance due shown on this screen and the format of the Credit limit cell is simply based on posted ledger entries: </div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh7eWIJNRyN5comqeem_2nV_bsUJwIadratmOT9HIWYq1r4gVP4GScLgcuNtVeAODwKFt-DGaMVd68ww8AQTLwfjktrSce1bOaXKkpgkaR1SB-llhq69AkcSM4Z8p3iCIZB3fm4sGgyHc8DGD5WgQMFCqCpVQH6_xs37kHHo7xFQyfZBY4MpTW4" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="622" data-original-width="1113" height="179" src="https://blogger.googleusercontent.com/img/a/AVvXsEh7eWIJNRyN5comqeem_2nV_bsUJwIadratmOT9HIWYq1r4gVP4GScLgcuNtVeAODwKFt-DGaMVd68ww8AQTLwfjktrSce1bOaXKkpgkaR1SB-llhq69AkcSM4Z8p3iCIZB3fm4sGgyHc8DGD5WgQMFCqCpVQH6_xs37kHHo7xFQyfZBY4MpTW4" width="320" /></a></div><div><br /></div>Customer statistics shows the 'Usage Of Credit Limit' of 98% based on the ledger total of 13,696 over a credit limit of 14,000.</div><div><br /></div><div>We can also see on the Customer Statistics other unposted documents that are in draft or released:</div><div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj1LLMvstDBB262MELVdtj8vfU3ueW875CHRjB7XSsRj8_fBvKSxicPqq8r7tDPnISAWb7R5-YZ289TacPOHqqDs4ChOjtu6bs_q-2QngN-1BGwJ6bs-OeY-M393BRKhMtKHxyvJUTqDssTUXKfy6LkiS5OGRAsfFgesYRY9er2Xald8h_zJxf0" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="607" data-original-width="381" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEj1LLMvstDBB262MELVdtj8vfU3ueW875CHRjB7XSsRj8_fBvKSxicPqq8r7tDPnISAWb7R5-YZ289TacPOHqqDs4ChOjtu6bs_q-2QngN-1BGwJ6bs-OeY-M393BRKhMtKHxyvJUTqDssTUXKfy6LkiS5OGRAsfFgesYRY9er2Xald8h_zJxf0" width="151" /></a></div><div><br /></div><b>Sales Document Credit Limit</b></div><div><b><br /></b></div><div>Here the user is immediately advised that the customer's credit limit has been exceeded - note I am yet to enter any sales lines.</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhYZ_CHPthuvO3THUjEtk5a_jM0Mn5B9ysoo-zCNEP1zSD_9J-7ElzqvIkXFvZdjxd8egI61BBkMZ1PGt384hW5Z7K971hvTaSkx43ImGEWvBi5S0ckWrd_a7Iq-VzPlnCvQwF7yv-6Kjw2x3zDDUbmBCeCkgqe78C3SIXtij4WEar5g9XY_CZz" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="780" data-original-width="1128" height="221" src="https://blogger.googleusercontent.com/img/a/AVvXsEhYZ_CHPthuvO3THUjEtk5a_jM0Mn5B9ysoo-zCNEP1zSD_9J-7ElzqvIkXFvZdjxd8egI61BBkMZ1PGt384hW5Z7K971hvTaSkx43ImGEWvBi5S0ckWrd_a7Iq-VzPlnCvQwF7yv-6Kjw2x3zDDUbmBCeCkgqe78C3SIXtij4WEar5g9XY_CZz" width="320" /></a></div><div><br /></div>On the document customer details the credit limit shows with red italics and the available credit is calculated. </div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjOr_gmEtV-LYv3nXRzWhHtacvchWK41gWDYrSNerFSbbkzLr1SzV0Ym93bbdPuo6z6ZsKeTY7ki3wtr5aulmYTB3irB3WuHAwm3ERBDEb21X2jmELmzTv-nAdJoaceaJ_ind9-8lB4EcuYuKYTSAHajZ7SI3xj-gxmE3LSq5QWckJFgOr2exz6" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="416" data-original-width="381" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEjOr_gmEtV-LYv3nXRzWhHtacvchWK41gWDYrSNerFSbbkzLr1SzV0Ym93bbdPuo6z6ZsKeTY7ki3wtr5aulmYTB3irB3WuHAwm3ERBDEb21X2jmELmzTv-nAdJoaceaJ_ind9-8lB4EcuYuKYTSAHajZ7SI3xj-gxmE3LSq5QWckJFgOr2exz6" width="220" /></a></div><br />If we drill down on the Available credit value we get to the, very handy, Available Credit page.</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEidb0aWvTRG3PlsM5pXaEqqJvWjGithF1Bi-oeGI3HqEG2xDyb5NEPhLBzi8vFcCDClde-5H5z6wrdGG_b5Z00uAgmMu_9uUT0_tb_lJpszuVJfYKg3dzG5MXpsxBnOp2eQSUbgWNR4oY1MQOYFin3zQ6GJQqs8JluG2EV8VVwLteB8ukYjdRdL" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="519" data-original-width="1221" height="136" src="https://blogger.googleusercontent.com/img/a/AVvXsEidb0aWvTRG3PlsM5pXaEqqJvWjGithF1Bi-oeGI3HqEG2xDyb5NEPhLBzi8vFcCDClde-5H5z6wrdGG_b5Z00uAgmMu_9uUT0_tb_lJpszuVJfYKg3dzG5MXpsxBnOp2eQSUbgWNR4oY1MQOYFin3zQ6GJQqs8JluG2EV8VVwLteB8ukYjdRdL" width="320" /></a></div><br />Turns out the Business Event 'Sales credit limit exceeded' is triggered by the ledger entry calculation, meaning only when a sales order is posted as an invoice (that then takes the customer over their credit limit) will the event activate.</div><div><br /></div><h3 style="text-align: left;">Timing</h3><div>Some power automate flows can take a few mins to run. This doesn't appear to be the case for business events. The update is instantaneous. </div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg3-0edTM-X55PfrbsLtRwCLNkKOOp2j4o1l99rWgnaIFuP0cg1h-INjnW2un3mK7FUWO5pJJ24QcJD7L_aWVwy2qvSWRKWyxPdkkd_8BldmT-doU7r5IdLLKQEJM2GjadeMCHvLy0oE4uyeJtiilNqfRjYFX61m7rf5Y0D6rCBprXjLHhSLXn2" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="687" data-original-width="1271" height="173" src="https://blogger.googleusercontent.com/img/a/AVvXsEg3-0edTM-X55PfrbsLtRwCLNkKOOp2j4o1l99rWgnaIFuP0cg1h-INjnW2un3mK7FUWO5pJJ24QcJD7L_aWVwy2qvSWRKWyxPdkkd_8BldmT-doU7r5IdLLKQEJM2GjadeMCHvLy0oE4uyeJtiilNqfRjYFX61m7rf5Y0D6rCBprXjLHhSLXn2" width="320" /></a></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjJwBwgZZml2GElwNRe7iKhK4yfUpTfnLs_MoitW3rgouuA6zYua6M8nftqTmEs5Q6Dq4mn3qFr7orsxXZAGdXKXYwpntygg11DlImtYnMEquUlZRN70AX5yATqfuEWI3lXtoMpTkGtvcE0m4MlsE0e43QN8-JjOdFgbjNmP2YlsukFdvoGA7V_" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="608" data-original-width="636" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEjJwBwgZZml2GElwNRe7iKhK4yfUpTfnLs_MoitW3rgouuA6zYua6M8nftqTmEs5Q6Dq4mn3qFr7orsxXZAGdXKXYwpntygg11DlImtYnMEquUlZRN70AX5yATqfuEWI3lXtoMpTkGtvcE0m4MlsE0e43QN8-JjOdFgbjNmP2YlsukFdvoGA7V_" width="251" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjKfeoSEbeieat6CR9-iQdAg-RPUxwMoormL-pwfju6UEOBUBwATS7zLQtwBfQzydq0HHLZI8oPPQjtBZpC592W_gjNErQMjGCbWnIgVb9QgKjtboMFi7l--Z1fg48mIO9HiQ0JX6nvq53CTp7Xz1ZjBwfwEecEC9OcbGTg7CBPhrR1_KCguoO0" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="640" data-original-width="1277" height="160" src="https://blogger.googleusercontent.com/img/a/AVvXsEjKfeoSEbeieat6CR9-iQdAg-RPUxwMoormL-pwfju6UEOBUBwATS7zLQtwBfQzydq0HHLZI8oPPQjtBZpC592W_gjNErQMjGCbWnIgVb9QgKjtboMFi7l--Z1fg48mIO9HiQ0JX6nvq53CTp7Xz1ZjBwfwEecEC9OcbGTg7CBPhrR1_KCguoO0" width="320" /></a></div><br /><h3 style="text-align: left;">Next post </h3>I'll run through some of the other business events and see what I can put together. The flows I have created however simple, I'll upload to this GitHub repo <a href="https://github.com/andywingate/d365bc-PowerAutomateFlows">https://github.com/andywingate/d365bc-PowerAutomateFlows</a> </div>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-83190703653449498282023-07-16T10:58:00.001+00:002023-07-16T10:58:24.923+00:00Access Dynamics 365 Business Central in Teams with only an M365 License<p>Do you want to give view (read only) access to all colleagues for your ERP system without needing to buy additional licenses?</p><p>When an organisation has both a Dynamics 365 Business Central and Microsoft 365 subscription, administrators can configure environments to enable access with Microsoft 365 licences, and choose exactly which tables and other objects this category of user will have access to. </p><p>When configured, employees that have a <b><i>Microsoft 365 licence but no Business Central licence</i></b> can view Business Central records that are shared with them in Microsoft Teams chat and channels.</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEge-btvh91C8UI0YqU04060KAeqtRePNUtkNNvM3XzmiSF34wR-IDwV7ztFfmo-cqn2BVbqPndsTDZ0hB2mhwwVgDgzQZiRxM-kTefcuQOov2lC6nnBxab-wu2UQwW692IlK3XtUo0r2WkBs2rNdhJEBjs1uuUkk1JprFSjUuNIVzeJdQvo11lV" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="501" data-original-width="1140" height="141" src="https://blogger.googleusercontent.com/img/a/AVvXsEge-btvh91C8UI0YqU04060KAeqtRePNUtkNNvM3XzmiSF34wR-IDwV7ztFfmo-cqn2BVbqPndsTDZ0hB2mhwwVgDgzQZiRxM-kTefcuQOov2lC6nnBxab-wu2UQwW692IlK3XtUo0r2WkBs2rNdhJEBjs1uuUkk1JprFSjUuNIVzeJdQvo11lV" width="320" /></a></div><p></p><p>You can read the full Learn article here <a href="https://learn.microsoft.com/en-gb/dynamics365/business-central/admin-access-with-m365-license">Business Central Access with Microsoft 365 licences - Business Central | Microsoft Learn</a></p><h4 style="text-align: left;">In this post I'll run through the config needed to setup this M365 access to D365BC. </h4><div>Firstly you might be wondering what is considered an M365 license for the purposes of this Teams access to D365BC, here is the list:</div><p></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi4hGPKd-UZhwE9EU8tJdAMPUp_bQro_x47Vh6KQoQPM_7z9fb7nGqmwh0IlPwdqhAJEOPgCJvOq7FEFaBWkaXSgynmiycD_w9GHo2AEYwIIn0y_Q5w-NsL-uhP95ApXp-GmKTbSnGTfw_JZLxjRRfWTvHBqovreDpGAGWi21zzyMs0CsmEiqNQ" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="589" data-original-width="843" height="224" src="https://blogger.googleusercontent.com/img/a/AVvXsEi4hGPKd-UZhwE9EU8tJdAMPUp_bQro_x47Vh6KQoQPM_7z9fb7nGqmwh0IlPwdqhAJEOPgCJvOq7FEFaBWkaXSgynmiycD_w9GHo2AEYwIIn0y_Q5w-NsL-uhP95ApXp-GmKTbSnGTfw_JZLxjRRfWTvHBqovreDpGAGWi21zzyMs0CsmEiqNQ" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Any of these Microsoft 365 will work for the BC access in Teams</td></tr></tbody></table><p>The feature is managed on the BC admin portal where there is an on/off control:</p><p></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhMmvYQvUqGnVVaFo3DuNV4YxGcHBespNSmrPaLn8ObK-KEKZpuLQPIOJnR-I0qGIAI3APxVQBMTgwa353ZLbJwoa094aWk0wCGciDlXDrn58IS7TKZ0S_8NDbPRdIgmFMZD5RkYBMv-PYrKlMIfKXefFxWfyzs8NlrG5Swq6HjoihrPA3vZJN2" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="363" data-original-width="1210" height="96" src="https://blogger.googleusercontent.com/img/a/AVvXsEhMmvYQvUqGnVVaFo3DuNV4YxGcHBespNSmrPaLn8ObK-KEKZpuLQPIOJnR-I0qGIAI3APxVQBMTgwa353ZLbJwoa094aWk0wCGciDlXDrn58IS7TKZ0S_8NDbPRdIgmFMZD5RkYBMv-PYrKlMIfKXefFxWfyzs8NlrG5Swq6HjoihrPA3vZJN2" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">D365BC Admin portal, showing the M365 access feature control</td></tr></tbody></table><p>Best to prepare a few things before you turn it on. I will create an Entra Group (aka Azure Security Group) that will manage the permissions granted to the M365 users. In this simple example I want to simply grant read access to anything mu BC users share to teams and I created a group named "BC Read All"</p><p></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjAq1_rmbTJrpSY7ZSdJ5AuftOweQ-LwyMFAf1yU-koJ4vivkJ_6Ea6etP0KJ3A1aJYO4oBBoJIJgjXou1MLUR77wrUHBr-ZssthPyvvyC3AqmyO7LffJXVVAXKJZm2iUUMOuljMxPeA6mjEb_4L-RsRUvAXZlSWDtrSTTp5YP6alIcOY3-zO8G" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="720" data-original-width="1418" height="162" src="https://blogger.googleusercontent.com/img/a/AVvXsEjAq1_rmbTJrpSY7ZSdJ5AuftOweQ-LwyMFAf1yU-koJ4vivkJ_6Ea6etP0KJ3A1aJYO4oBBoJIJgjXou1MLUR77wrUHBr-ZssthPyvvyC3AqmyO7LffJXVVAXKJZm2iUUMOuljMxPeA6mjEb_4L-RsRUvAXZlSWDtrSTTp5YP6alIcOY3-zO8G" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Microsoft Entra admin center showing the "BC Read All" group</td></tr></tbody></table><p>Next I'll set the permissions for this security group in BC and clear out the License Configuration for M365 Licensed users - to ensure all control is managed by the Security Group (see here for more on that approach <a href="https://blog.wingateuk.com/2023/06/simplify-your-user-onboarding-process.html">Simplify your user onboarding process with Dynamics 365 Business Central & Azure Security Groups</a>)</p><p style="text-align: left;"></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgexit8fFe2zbJbEnGDFqp9PMW1c991eTfFAUww1UnOnwrt9jqdAtHL3SsEQt4SVIVr3_UreruXLw9Jz5G0vSSiw2qve9A06dA29GJA5WzeZNyn67yqtZTZk3814Ibu9g4anuT67eS11s1xSBFPdQxT18AdtyGwkdPhrIBkQJajwrEFwPuwiJOn" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="359" data-original-width="1414" height="81" src="https://blogger.googleusercontent.com/img/a/AVvXsEgexit8fFe2zbJbEnGDFqp9PMW1c991eTfFAUww1UnOnwrt9jqdAtHL3SsEQt4SVIVr3_UreruXLw9Jz5G0vSSiw2qve9A06dA29GJA5WzeZNyn67yqtZTZk3814Ibu9g4anuT67eS11s1xSBFPdQxT18AdtyGwkdPhrIBkQJajwrEFwPuwiJOn" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Permissions config on the Security Groups page for "BC Read All" </td></tr></tbody></table><p></p><p style="text-align: left;"></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjC9omP3eb4-tygRd2Nk-LI-Cgf7gcpz6amJ5bMxLtSr0N-JyccVuPOiV_-hFAWkb6E_4D40Njx9vTLJg8D4fuwQXo1rII1VjZ9_QZleoyKPbikoFuno7ZJfki-hR4_XWQfS3zCqHxylcQJsM9CWvYZlfCH74pgFm9vh48FrM8B8nUrjAf_2WLS" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="535" data-original-width="956" height="179" src="https://blogger.googleusercontent.com/img/a/AVvXsEjC9omP3eb4-tygRd2Nk-LI-Cgf7gcpz6amJ5bMxLtSr0N-JyccVuPOiV_-hFAWkb6E_4D40Njx9vTLJg8D4fuwQXo1rII1VjZ9_QZleoyKPbikoFuno7ZJfki-hR4_XWQfS3zCqHxylcQJsM9CWvYZlfCH74pgFm9vh48FrM8B8nUrjAf_2WLS" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Cleared out License config for Microsoft 365, this ensures all permissions are managed by the above Security group config.</td></tr></tbody></table><p></p><p style="text-align: left;">Lets turn on the feature now access the Dynamics BC admin page and run though the steps </p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgSIMUK3yUAKiIaIgbdFg4RWFH4fY7LgKDnhTA-YWVWE8a-Ag8CbFwxb1lA1X51WuuUriRfHkmYI-Ev5TiZLZj_pRgk5gawEbVVIyRcQ_Kauzrl6qLbq2_jFheM7vonkqtQ3qCCqbucrejTwJsYZ-8L7IsjUSksd4F48fjzBIsBR1jAZkPdj2AK" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="909" data-original-width="1915" height="152" src="https://blogger.googleusercontent.com/img/a/AVvXsEgSIMUK3yUAKiIaIgbdFg4RWFH4fY7LgKDnhTA-YWVWE8a-Ag8CbFwxb1lA1X51WuuUriRfHkmYI-Ev5TiZLZj_pRgk5gawEbVVIyRcQ_Kauzrl6qLbq2_jFheM7vonkqtQ3qCCqbucrejTwJsYZ-8L7IsjUSksd4F48fjzBIsBR1jAZkPdj2AK" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Turn on the features in the admin portal</td></tr></tbody></table><p style="text-align: left;"></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi9csITeqH_ZKibO_v_YKGHivLELMN_cTyJWqb2T5SNkR5NQu_ll3l3D1KIrS3vccNcBzy4AgHcOOm7dpvVC3_g-BWJOMKmu5StfkQewHZAxA5Z04FrHK25AicMUbSpU6LRfY-tN6lN0hyq9G74W6PVvu-onBpniSH05EUMCxurFRUlTuQFsSvq" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="559" data-original-width="596" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEi9csITeqH_ZKibO_v_YKGHivLELMN_cTyJWqb2T5SNkR5NQu_ll3l3D1KIrS3vccNcBzy4AgHcOOm7dpvVC3_g-BWJOMKmu5StfkQewHZAxA5Z04FrHK25AicMUbSpU6LRfY-tN6lN0hyq9G74W6PVvu-onBpniSH05EUMCxurFRUlTuQFsSvq" width="256" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">We already prepared the permissions so its fine to choose "Don't restrict access"</td></tr></tbody></table><br />That's it - lets test it out now. For an M365 user to view BC records they need to be shared to Teams; here I have shared the Purchase Order list and pinned it as a tab<p></p><p style="text-align: left;"></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiuWA67wl-yaN_1oNtJMO4YjH3VrpOoFsh1rXrt7DRO_V7Try-Sw9DJv35VV29LPO57WWeEjUU91P2DevNFCTQkgh8kATeP1m1tolv1nHoLTZBOpnx_CXrNN_hxk4FYu6MiitYVSJK1VRWWrG0z4jUMmO4CnptzMi1E3MK6Mf2Us3dLnh8i2mr2" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="695" data-original-width="1408" height="158" src="https://blogger.googleusercontent.com/img/a/AVvXsEiuWA67wl-yaN_1oNtJMO4YjH3VrpOoFsh1rXrt7DRO_V7Try-Sw9DJv35VV29LPO57WWeEjUU91P2DevNFCTQkgh8kATeP1m1tolv1nHoLTZBOpnx_CXrNN_hxk4FYu6MiitYVSJK1VRWWrG0z4jUMmO4CnptzMi1E3MK6Mf2Us3dLnh8i2mr2" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">A BC user sharing a list page to teams<br /><br /></td></tr></tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiLspoYUqtQcr3THcH45GE_Noeyjxj96XFcEftx3ABCy-dTD2dtjYLkuG6xfO6XqBdLoWLEUgKSjk15465wuqDpGKTS0oTrYC5Sg-Z63y24kqJxafdfAM5ipIjcj5YDM2tsdUhQkP-PC0Q3BMgDhTg2KypWxfYzzJdDbVTZq9bjR34RanM886AB" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="819" data-original-width="702" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEiLspoYUqtQcr3THcH45GE_Noeyjxj96XFcEftx3ABCy-dTD2dtjYLkuG6xfO6XqBdLoWLEUgKSjk15465wuqDpGKTS0oTrYC5Sg-Z63y24kqJxafdfAM5ipIjcj5YDM2tsdUhQkP-PC0Q3BMgDhTg2KypWxfYzzJdDbVTZq9bjR34RanM886AB" width="206" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Pick the team channel to share to</td></tr></tbody></table><p></p><p style="text-align: left;">Now, I've logged into Teams web as Grady, my example user who has an M365 license and no BC License</p><p style="text-align: left;"></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgyaWG1W_7RGua0MPZxKwxEvIJF50SMKpt8aI5xR_8WwUj27rkm8KEHa6s456EVKp_itL4RjRPBcY_R4RZVLZAF7kXqD-5coSbpZJLi2dvNw1R85HdNJTGGq6aevhYdFqHD9mbgLDrEIiPFMr3Y0x0UhYP3-YHSeRdFImUsj5AoSsPmJ3IzUzf4" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="882" data-original-width="1418" height="199" src="https://blogger.googleusercontent.com/img/a/AVvXsEgyaWG1W_7RGua0MPZxKwxEvIJF50SMKpt8aI5xR_8WwUj27rkm8KEHa6s456EVKp_itL4RjRPBcY_R4RZVLZAF7kXqD-5coSbpZJLi2dvNw1R85HdNJTGGq6aevhYdFqHD9mbgLDrEIiPFMr3Y0x0UhYP3-YHSeRdFImUsj5AoSsPmJ3IzUzf4" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Just to check what licenses Grady has</td></tr></tbody></table><br />Here is the Teams channel the BC user shared the PO list to <p></p><p style="text-align: left;"></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEira_ixDzZ6n_18YwAS6pbpWkKCJ_nvq1Q9gmE0d2B2NgZhehMWfgqVY5cwj9Q7Xu9cCn7IhdB6nzlahZ281_x_VnK6u42hNdXJ9iAxRgka2YXE-Oi4c3WwazQVxpvo-nByqQ-IyrPy7w0R2lAVhfDNFsDX_PXw03icQjsgcdCVIJaV-FJcfO4X" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="954" data-original-width="1417" height="215" src="https://blogger.googleusercontent.com/img/a/AVvXsEira_ixDzZ6n_18YwAS6pbpWkKCJ_nvq1Q9gmE0d2B2NgZhehMWfgqVY5cwj9Q7Xu9cCn7IhdB6nzlahZ281_x_VnK6u42hNdXJ9iAxRgka2YXE-Oi4c3WwazQVxpvo-nByqQ-IyrPy7w0R2lAVhfDNFsDX_PXw03icQjsgcdCVIJaV-FJcfO4X" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Teams channel with content shared from BC by BC users</td></tr></tbody></table><p></p><p style="text-align: left;">Grady can view the list by clicking on the "Details" action and optionally pin as a tab for handy future access to all POs</p><p style="text-align: left;"></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhqqJAVEwYqN_vomDvhOmb09YhAaJ_L47QHG0_CRJ7FNBYBkP2HkV9Rn5CnenXGrM4J4wnaXkNG86E8SrbXPDnhlmvXWboOB8tEKpoTTEgAigUVhqA50buHg0FHftBDyfwIlLoQKhrNSs-coVz-WgIO3mUoqRnFPB6lg1ghxO50q8lvV0isvdfq" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="954" data-original-width="1417" height="215" src="https://blogger.googleusercontent.com/img/a/AVvXsEhqqJAVEwYqN_vomDvhOmb09YhAaJ_L47QHG0_CRJ7FNBYBkP2HkV9Rn5CnenXGrM4J4wnaXkNG86E8SrbXPDnhlmvXWboOB8tEKpoTTEgAigUVhqA50buHg0FHftBDyfwIlLoQKhrNSs-coVz-WgIO3mUoqRnFPB6lg1ghxO50q8lvV0isvdfq" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The PO list page opened in Teams by Grady, our M365 user</td></tr></tbody></table><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgANboko9SjitY1Ph5bztB1NzuSMVuXizkZWchss-uB0TqoMIu6yKPjSC2jUzdo2uX3sVrQjhAENr5_ewWvLnRdDAnvHM4y4cCR334B2KGcdvlWDx1QdJkbqV-f2ekThV-S9pMnarNboqt1cN_yH7Q5D4e4JoKqHqJYtyF5SUlwumu_sOUDagyk" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="954" data-original-width="1481" height="206" src="https://blogger.googleusercontent.com/img/a/AVvXsEgANboko9SjitY1Ph5bztB1NzuSMVuXizkZWchss-uB0TqoMIu6yKPjSC2jUzdo2uX3sVrQjhAENr5_ewWvLnRdDAnvHM4y4cCR334B2KGcdvlWDx1QdJkbqV-f2ekThV-S9pMnarNboqt1cN_yH7Q5D4e4JoKqHqJYtyF5SUlwumu_sOUDagyk" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Grady is now using the tab and tab chat to collaborate on these records</td></tr></tbody></table><p style="text-align: left;"></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEicgalSRcaRm_7ViWSunfIampEtTREtjyVgAgrrpx1xk_PVa44BgGXj4XqRx40C_BExJyvg3cy_gzWz5Pd9mpLm8dnfvtSjOKfAZE-DMU1AgePbWfbzbpufPcf0sC51seHdae5A_YRWnwR3CopRd1BL9EuuVKeeWOz3l3NxMiM6i_KoU1rj0L6i" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="952" data-original-width="1777" height="171" src="https://blogger.googleusercontent.com/img/a/AVvXsEicgalSRcaRm_7ViWSunfIampEtTREtjyVgAgrrpx1xk_PVa44BgGXj4XqRx40C_BExJyvg3cy_gzWz5Pd9mpLm8dnfvtSjOKfAZE-DMU1AgePbWfbzbpufPcf0sC51seHdae5A_YRWnwR3CopRd1BL9EuuVKeeWOz3l3NxMiM6i_KoU1rj0L6i" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Individual documents can be viewed from the list</td></tr></tbody></table><p></p><h4 style="text-align: left;">There we go 'free' access to BC for your M365 users!</h4><p style="text-align: left;">The final bit of setup you may want to consider is the layout of the document presented in Teams, unlike a BC user accessing a page in the BC web client, M365 users accessing BC in Teams have no control of the layout.</p><p style="text-align: left;">To manage this a BC admin should be mindful of the default profile in BC as that will be assigned to the M365 users when they access a BC object for the first time:</p><p style="text-align: left;"></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhfgUYcjwKX5fFpaF5zZ0mI5gdTExa6MUMW_12B16u3r9zyIPdy70yA7887y7L8Xu1fwhilI4ltYpbWeSY6M8ZF3HfRqBR1zWTrr5U_Y7o63RTxc8ecPeq4Lrzj6SiCTBrHMQhRP7HA-BY4FotoA1Wixi3bOE4JRVz2LihjRw_DjlVLEEm43dtT" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="864" data-original-width="1366" height="202" src="https://blogger.googleusercontent.com/img/a/AVvXsEhfgUYcjwKX5fFpaF5zZ0mI5gdTExa6MUMW_12B16u3r9zyIPdy70yA7887y7L8Xu1fwhilI4ltYpbWeSY6M8ZF3HfRqBR1zWTrr5U_Y7o63RTxc8ecPeq4Lrzj6SiCTBrHMQhRP7HA-BY4FotoA1Wixi3bOE4JRVz2LihjRw_DjlVLEEm43dtT" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">caption</td></tr></tbody></table><p></p><p style="text-align: left;">Then use the <b>Customise Pages</b> to set any layout for this profile, in this example the Vendor Order number was a handy which I've added:</p><p style="text-align: left;"></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiINErGctHKUyyd14hZ0lJ4xfcbamIkFMAwoI1BN2ipgkjbKFUIvxSh2r0HfiYMfV7NsFIk9JVoLSiybA_TsJ8xjoNgAM3rJI_M4WQcOl8OvXk2qaIyoj3PdT0AwI_vGiX1nEpiE3ZVTkf11vZmM-krj8S4hLjItE3Sy65xpyClL4Pw-gW7kLSc" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="755" data-original-width="1415" height="171" src="https://blogger.googleusercontent.com/img/a/AVvXsEiINErGctHKUyyd14hZ0lJ4xfcbamIkFMAwoI1BN2ipgkjbKFUIvxSh2r0HfiYMfV7NsFIk9JVoLSiybA_TsJ8xjoNgAM3rJI_M4WQcOl8OvXk2qaIyoj3PdT0AwI_vGiX1nEpiE3ZVTkf11vZmM-krj8S4hLjItE3Sy65xpyClL4Pw-gW7kLSc" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Customise pages, navigate to the page, and drag/drop field you want<br /></td></tr></tbody></table><p></p><p style="text-align: left;">Back in Teams - since Grady has been assigned that Business Manager profile - that's the view he will get. </p><p style="text-align: left;"></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj6Ts3PqtNCfJZA_piJoWUWsXxXQcPHz8PzZYsAIM2mksKXW3kZxh8WEXRXBqGWOpILurC9YHnsyo43M1kzAzkpjNHMdXu4trSkTCSDun59tswi8669sXdUPN_NU4KZoGryMjbR6SOmAszPDW4iK8FaYLlc3CJxFtCIuvty7tcq-rzA4u6fDnfD" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="872" data-original-width="1364" height="205" src="https://blogger.googleusercontent.com/img/a/AVvXsEj6Ts3PqtNCfJZA_piJoWUWsXxXQcPHz8PzZYsAIM2mksKXW3kZxh8WEXRXBqGWOpILurC9YHnsyo43M1kzAzkpjNHMdXu4trSkTCSDun59tswi8669sXdUPN_NU4KZoGryMjbR6SOmAszPDW4iK8FaYLlc3CJxFtCIuvty7tcq-rzA4u6fDnfD" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Back in teams as Grady, to see the updated layout</td></tr></tbody></table><p></p><p></p><p></p><h4 style="text-align: left;">Summary</h4><div>I have shown the steps to grand access to your M365 users, we ran through an example of an M365 user and we finally tailored the view that the M365 user got in Teams through the Profiles (Roles) > Customise pages features.</div><p></p><p></p><p></p><p></p>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-76263739928075271842023-06-11T17:33:00.012+00:002023-06-12T11:53:26.792+00:00Simplify your user onboarding process with Dynamics 365 Business Central & Azure Security Groups<p>If you are involved with onboarding new users this post is for you.</p><p>Until recently, when provisioning a new user to Dynamics 365 Business Central, you needed to do all the usual steps in AAD and then also access the BC application itself to refresh the user list and assign the new user to one or more User Groups or User Permissions.</p><p>The good news is that, after a short setup, you no longer need to leave the comforting Light Blue of the Azure portal (<a href="https://www.bleepingcomputer.com/news/microsoft/microsofts-azure-portal-down-following-new-claims-of-ddos-attacks/" target="_blank">assuming there is no DDoS going on</a>) to onboard new BC users. </p><p>This blog post runs through the steps to create Azure Security Groups and configure them in BC which will in turn grant users permissions and the entitlement to access BC.</p><p>Here is the reference documentation page - <a href="https://learn.microsoft.com/en-us/dynamics365/business-central/ui-security-groups">Control Access Using Security Groups - Business Central | Microsoft Learn</a> & feature release page <a href="https://learn.microsoft.com/en-us/dynamics365/release-plan/2023wave1/smb/dynamics365-business-central/manage-user-permissions-using-security-groups">Manage user permissions using security groups | Microsoft Learn</a>.</p><h3 style="text-align: left;">Step-by-step</h3><p></p><ul style="text-align: left;"><li>Create one or more Azure Security Groups. </li><ul><li>In this example I have created two groups just to line up with the license types "Essential" and "Team Member". </li><li>The Essential users are all members of the finance team who need full business access. </li><li>The Team Member users are all procurement team people, so I'll give them basic access plus purchase side access.</li></ul></ul><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh2cBzboItcf_gyf2UZekfTnguttEMDtPufaeeQVyTGeddyPzDkDAkaIAz7Q5PN1aApNzm0Nhh6X809uBi6ZH8lN6H-afXiPPgE1DUOGKve9lNyFj3N3ZfTmMxpa6OdHQY-79-V2Mgyipo-GVskymK6gk7-b96sDZTbwSzH4o1LrLV5Hn4qbQ" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="668" data-original-width="730" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEh2cBzboItcf_gyf2UZekfTnguttEMDtPufaeeQVyTGeddyPzDkDAkaIAz7Q5PN1aApNzm0Nhh6X809uBi6ZH8lN6H-afXiPPgE1DUOGKve9lNyFj3N3ZfTmMxpa6OdHQY-79-V2Mgyipo-GVskymK6gk7-b96sDZTbwSzH4o1LrLV5Hn4qbQ" width="262" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Creating a new Security Group in Azure<br /></td></tr></tbody></table></div><div><ul><li>Once the group is created you should assign any members and optionally assign the BC License you want these users to have.</li></ul><div style="text-align: left;"><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhdGMX6iGnyARacWckP8_CxrSQylANz1rIjPfZfMFsJG6Oz98W-1KxGlzrfBwadLVjegnveqT7fDZBsbSaunaZf760z782bUT_xvDD5pKUDDiIAwfN6w01Prbkh2zni9uMlcm3fT4XiM0Dol6GcOblxSTkBqdsMEP6tqtYt-BnfnPdrOoAfrA" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="853" data-original-width="1040" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEhdGMX6iGnyARacWckP8_CxrSQylANz1rIjPfZfMFsJG6Oz98W-1KxGlzrfBwadLVjegnveqT7fDZBsbSaunaZf760z782bUT_xvDD5pKUDDiIAwfN6w01Prbkh2zni9uMlcm3fT4XiM0Dol6GcOblxSTkBqdsMEP6tqtYt-BnfnPdrOoAfrA" width="293" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Configure the Security Group</td></tr></tbody></table><ul style="text-align: left;"><li>Set the permissions for this group in BC. Navigate to the Security Groups page in BC. </li><ul><li>Here I am in the process of selecting the 2nd of my two demo groups:</li></ul></ul></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEitwt4EuTe98UdJU-2awn-d0toglrHBmw-8uLAkYYArtDBQUKgHf5YcV8Ura1izFATXVQnmSH7I2nraW-a7hoSqJ5nSStSIqPriQbE9GkNg6DRAz1LcoPjjMKYn4A3sdZWd4ZAAVWICYqbofnVni0hRFkvQHzGraqmkeGuF_P_0BpbOJclOXw" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="826" data-original-width="1427" height="185" src="https://blogger.googleusercontent.com/img/a/AVvXsEitwt4EuTe98UdJU-2awn-d0toglrHBmw-8uLAkYYArtDBQUKgHf5YcV8Ura1izFATXVQnmSH7I2nraW-a7hoSqJ5nSStSIqPriQbE9GkNg6DRAz1LcoPjjMKYn4A3sdZWd4ZAAVWICYqbofnVni0hRFkvQHzGraqmkeGuF_P_0BpbOJclOXw" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Pick the Security Group you need - you can give it a different name inside BC - the BC code field is limited to 20 characters.</td></tr></tbody></table><ul style="text-align: left;"><li>Using the 'Permission Set by Security Group' action you can easily review and apply permissions to all the groups</li></ul><div style="text-align: left;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhB9lSquqoTYk2V0pIeQSl4M6pxFQ74z_tKH1W-1V0rZDOjTc6l2rfFvlGSE57N5q2hX2LHR-mGm_RjjJ2pjkMw_mLng9junIiB30IfiYyw7LRPFIB-uxodnJOa9Rfh5UjiBFDBSKJ1foUkCf1Qykr-OAtwee0MImHslIJPk9DBB4M2ADKY3A" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="298" data-original-width="870" height="110" src="https://blogger.googleusercontent.com/img/a/AVvXsEhB9lSquqoTYk2V0pIeQSl4M6pxFQ74z_tKH1W-1V0rZDOjTc6l2rfFvlGSE57N5q2hX2LHR-mGm_RjjJ2pjkMw_mLng9junIiB30IfiYyw7LRPFIB-uxodnJOa9Rfh5UjiBFDBSKJ1foUkCf1Qykr-OAtwee0MImHslIJPk9DBB4M2ADKY3A" width="320" /></a></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh64J-q5VHdFMa6KXsSJePDy-gqe5zc-NxDMDdRHus7iUt2p1BjDZlnbDcZ6uBPkR0553SJVo2_8NBA50sw4M1oCAOJjl5Nm3yAxcVloRRHvXrBxIowhLjDvDzESe3kFTbO9Dp6mMW6tpyiOC9dY2oMLC4uiulOkZK1cK9MU9sXIVKhufz5dA" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="558" data-original-width="1827" height="98" src="https://blogger.googleusercontent.com/img/a/AVvXsEh64J-q5VHdFMa6KXsSJePDy-gqe5zc-NxDMDdRHus7iUt2p1BjDZlnbDcZ6uBPkR0553SJVo2_8NBA50sw4M1oCAOJjl5Nm3yAxcVloRRHvXrBxIowhLjDvDzESe3kFTbO9Dp6mMW6tpyiOC9dY2oMLC4uiulOkZK1cK9MU9sXIVKhufz5dA" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">This page is very handy as you can drill into the specific permissions, copy and easily review across all security groups what has been granted. </td></tr></tbody></table><br />One word of warning - when you add permissions on this page the company specification is set as 'blank', i.e. the wildcard for all companies. So if you need to restrict the company access better to use the other page shown below:</div><div style="text-align: left;"><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgdNoOtL7WtvLQfjfHruGdV490wU00sd1Y3TJ6VtJsylJJwWvTeD_X3tV_ObZwfXQtb8iWSQqLK6Kss4q6DgtDWsrb538PjoEA9hl8RRUV7zKkg28PRHuAg5Zy_Gpjtbs_Wy6Hj3vMFIT7h-Cy2e8o9GfSx7YahUcUCLi8V7lw99BwjiXWByQ" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="322" data-original-width="936" height="110" src="https://blogger.googleusercontent.com/img/a/AVvXsEgdNoOtL7WtvLQfjfHruGdV490wU00sd1Y3TJ6VtJsylJJwWvTeD_X3tV_ObZwfXQtb8iWSQqLK6Kss4q6DgtDWsrb538PjoEA9hl8RRUV7zKkg28PRHuAg5Zy_Gpjtbs_Wy6Hj3vMFIT7h-Cy2e8o9GfSx7YahUcUCLi8V7lw99BwjiXWByQ" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Security Group Permissions - showing company specification </td></tr></tbody></table></div><div style="text-align: left;"><ul style="text-align: left;"><li>I would recommend to move all control of permission sets to the security groups and remove the setup in License Configuration.</li><ul><li>Security Group permissions are Dynamic</li><li>License Config permissions are granted on initial login only</li></ul></ul><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjYQupLaFjb2c0As1DCszxHHFhqjFzli81tvGkqGNTh-R2AwDSAPJGvEKgY6V-NImGluQpESRq3nalEcK6d5GAP4hqc6pKTKlRNypYBfTu0_anGsjWd_RgPi6mMyhSep-MziJdyFl5HNLCItxqndKaOB7jhx5HE8lXv7evbpzvK8qVnPg9J4A" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="638" data-original-width="941" height="217" src="https://blogger.googleusercontent.com/img/a/AVvXsEjYQupLaFjb2c0As1DCszxHHFhqjFzli81tvGkqGNTh-R2AwDSAPJGvEKgY6V-NImGluQpESRq3nalEcK6d5GAP4hqc6pKTKlRNypYBfTu0_anGsjWd_RgPi6mMyhSep-MziJdyFl5HNLCItxqndKaOB7jhx5HE8lXv7evbpzvK8qVnPg9J4A" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">I recommend removing the permissions setup from the License Config page and instead adopt the approach of always holding all permission config on the Security Group only <br /></td></tr></tbody></table><ul><li><span>Any special permissions required over and above those granted dynamically by the security group membership can simply be added directly to the user card. But of course the whole reason for using Security Groups was so we didn't need to do that!</span></li></ul><div>Any user added to AAD and assigned to a Security Group that's been setup in BC and has been assigned a BC license (either directly or indirectly) can login to BC right away! You no longer need to run the 'Update Users from M365' action on the user list page. Huzzah!</div></div></div></div><p></p>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-8858077188634593012023-06-09T12:32:00.008+00:002023-06-09T12:43:04.964+00:00Business Central License Guide - Recent Changes Comparrison <p>Microsoft have released an updated <a href="https://go.microsoft.com/fwlink/?LinkId=866544&clcid=0x409" target="_blank">Dynamics 365 License guide</a>.</p><p>Microsoft Business Applications MVP <a href="https://www.hougaard.com/" target="_blank">Erik Hougaard</a> posted a great video summarising the changes related to Business Central - <b><i>I read the Business Central License Guide, so you don't have to!</i></b> - check it out on his <a href="https://youtu.be/7acSx9rosz8" target="_blank">YouTube channel</a>. He regularly has great content, usually always as a video & usual live coding something fun!</p><p>I recently came across this handy web tool that will compare PDF files. So here is a side-by-side document comparison of the March and June license guides - <a href="https://draftable.com/compare/qrYAKYuokbfp" target="_blank">https://draftable.com/compare/qrYAKYuokbfp</a></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhc7AOvQm1hbW59o-CgnLblpDfS-9T3mwst7sf9MgoWULVZkSXjINNT3-z-xqE_noMqVS9upvIkY-7bHWkNfypETsyVtVCusmU24nug5SMD8jUtGAOe17Yq0-ZI7PsezxBMVhcCGt3ihJj2WttnqHWoCQ3Mc7tIdhVLmUPUS7u3fc2BaqBXuw" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1032" data-original-width="1920" height="172" src="https://blogger.googleusercontent.com/img/a/AVvXsEhc7AOvQm1hbW59o-CgnLblpDfS-9T3mwst7sf9MgoWULVZkSXjINNT3-z-xqE_noMqVS9upvIkY-7bHWkNfypETsyVtVCusmU24nug5SMD8jUtGAOe17Yq0-ZI7PsezxBMVhcCGt3ihJj2WttnqHWoCQ3Mc7tIdhVLmUPUS7u3fc2BaqBXuw" width="320" /></a></div><p><br /></p>I was pleased to see the extra detail around the additional environments which confirms for every additional production environment this comes along with entitlement for 3 additional sandboxes, however only 4gb of additional database capacity space seems a bit low, fingers crossed Microsoft can up that in the future!<p></p>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-35370981773890142232023-06-04T13:35:00.006+00:002023-06-09T06:58:40.920+00:00Emailing from Dynamics 365 Business Central - All Your Important Business Emails in One Place!<p>Reflect for a moment on just how fundamental email is for business. Safe to say in a world of Teams, Slack, WhatsApp etc email is still essential part of running a business. Also safe to say a lot of users struggle with email overload - although they might not all admit to that!</p><p>There is a reason we send the <b><i>important stuff</i></b> by email, and when it comes to dealing with your trading partners there are a lot of important things to send! </p><p>A key benefit of Dynamics 365 Business Central when it comes to emails, is that it saves all the emails you send. This gives your team a central place where all outbound email communications are logged. Combine this with Exchange Online shared mailboxes for the replies and you have yourself a very robust setup.</p><p>Here are a few of the basic steps to you get your email setup to help you get the most out of D365BC.</p><p>Naturally there are also some great resources to help you on Microsoft Learn: <a href="https://learn.microsoft.com/en-gb/dynamics365/business-central/admin-how-setup-email#set-up-view-policies">Set up email in Business Central (contains video) - Business Central | Microsoft Learn</a></p><h2 style="text-align: left;">Email Accounts - Current User</h2><div>If you are using D365BC its usually a safe bet that you are also using MS Exchange Online (aka Outlook) for email and that's good news as these two work together really well. </div><div><br /></div><div>The setup for individuals to send emails from D365BC using their Exchange accounts can be done in a few clicks:</div><div><br /></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg0jZi2a2BLQq7AfpDvMiuNqqlvFUiHQ9FSv4pFjdc2zhasxrFDIIZyh44iCtvfFBTF43GLm5-AKFkPQMF3J4EeqU57M5MdQLSuXAjDNzAuzTZfSul7Dau4E-TYqzqfmUa3VkVeNShjJ8wWKfrnHLmzQFqv8jzlW6PqYjr5pMTROuMrDqPEjw" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="384" data-original-width="906" height="136" src="https://blogger.googleusercontent.com/img/a/AVvXsEg0jZi2a2BLQq7AfpDvMiuNqqlvFUiHQ9FSv4pFjdc2zhasxrFDIIZyh44iCtvfFBTF43GLm5-AKFkPQMF3J4EeqU57M5MdQLSuXAjDNzAuzTZfSul7Dau4E-TYqzqfmUa3VkVeNShjJ8wWKfrnHLmzQFqv8jzlW6PqYjr5pMTROuMrDqPEjw" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Visit the Email Accounts page and click New</td></tr></tbody></table><br /></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhq8JTh3SfP8zzjYDcMGw-MP8X0TxP-IfA3w2CuAZ0q6L3msAB2Lvvl85hgB__wP3ostgXUv0evv7rw986hv8g4vEV20oOjtJB6CNPwd3eGXLJBs66uXcAQYOZCCyvHp0A5ih5-x-5VB1cyPuxWceMDcfzl_BmXHx3F902i6UmwYfPTIHVqng" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="557" data-original-width="602" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEhq8JTh3SfP8zzjYDcMGw-MP8X0TxP-IfA3w2CuAZ0q6L3msAB2Lvvl85hgB__wP3ostgXUv0evv7rw986hv8g4vEV20oOjtJB6CNPwd3eGXLJBs66uXcAQYOZCCyvHp0A5ih5-x-5VB1cyPuxWceMDcfzl_BmXHx3F902i6UmwYfPTIHVqng" width="259" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Pick Current user, click next and you're done!</td></tr></tbody></table><br />All emails sent from D365BC are saved and can be viewed from the <b>Sent Emails</b> page as well as in the current users outlook mailbox 'Sent Items' folder. </div><div><br /></div><div>Let's send a test email to check that:</div><div><br /></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjfkr3MKXL47czQBn4pwG2AbMjE1oN1wt0SsDgDG9IzvCYY_uOheHop1z57cNkVErmAWVCw2EffQY11gCFxAftHtYlWC743P653b4xkmjwtlZLFOrm9z7lsfhrXFtVvPoKIxzEe4PsIPV7t6taw_09l6StKfJ2jmMaNoYahZtEt0OQlqhyMug" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="334" data-original-width="1008" height="106" src="https://blogger.googleusercontent.com/img/a/AVvXsEjfkr3MKXL47czQBn4pwG2AbMjE1oN1wt0SsDgDG9IzvCYY_uOheHop1z57cNkVErmAWVCw2EffQY11gCFxAftHtYlWC743P653b4xkmjwtlZLFOrm9z7lsfhrXFtVvPoKIxzEe4PsIPV7t6taw_09l6StKfJ2jmMaNoYahZtEt0OQlqhyMug" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Use the 'Send Test Email' button</td></tr></tbody></table><br />I sent the test to myself - so 3 places to check:</div><div><br /></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi5CtQ_LFVRxJz-eMC4ZmwhzZ4c6y0_dHulv6qcVZLWHjsh7Ju-nh1t7luezQIo3BUAp4U7W1Yvtr82fzEgLPaN5NCpDGgkYoVKymyV6ynVwpnnpBv0ClHIu7P0EYrwZH27DRs1L6KIcwSOjEtrYZO2fk4YR6TsWZK9Zgxdt5cc_vm5ol1cZQ" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="329" data-original-width="1196" height="88" src="https://blogger.googleusercontent.com/img/a/AVvXsEi5CtQ_LFVRxJz-eMC4ZmwhzZ4c6y0_dHulv6qcVZLWHjsh7Ju-nh1t7luezQIo3BUAp4U7W1Yvtr82fzEgLPaN5NCpDGgkYoVKymyV6ynVwpnnpBv0ClHIu7P0EYrwZH27DRs1L6KIcwSOjEtrYZO2fk4YR6TsWZK9Zgxdt5cc_vm5ol1cZQ" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">My outlook mailbox Inbox folder</td></tr></tbody></table><br /></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgu-AE8RuLOmQQvA8ZJNhsxaFY-6o8vNtY2WiOtfzyuOxvF_gKPtH2yLJhxknqLykwwzQauHJl8pJNsOxaMC8epNFF7_j2-zQPPiXiarGzgl27MyPPKBMpFdIB4t7vMS7Ijv82LjlTaakSY98sSMqVqxFzmcq4zcp-JQd7mHmFKcspyWkCrlA" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="285" data-original-width="1317" height="69" src="https://blogger.googleusercontent.com/img/a/AVvXsEgu-AE8RuLOmQQvA8ZJNhsxaFY-6o8vNtY2WiOtfzyuOxvF_gKPtH2yLJhxknqLykwwzQauHJl8pJNsOxaMC8epNFF7_j2-zQPPiXiarGzgl27MyPPKBMpFdIB4t7vMS7Ijv82LjlTaakSY98sSMqVqxFzmcq4zcp-JQd7mHmFKcspyWkCrlA" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">My mailbox Sent Items folder<br /></td></tr></tbody></table><div class="separator" style="clear: both; text-align: center;"><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjh-hDf0zYhjlJYj6tDNrJ457-95usjGDSj8Rj75iMU4tML9dM6WXKbqTsLdD8JuiM8SioXMLb-Qtv-LLLpIV-_mUJWa7zuOyvOYCSY2mi3Eh0pTiO2WCi_D3W35KW6uVIa64O4z1h7RIoJuiz8BbTIadbo-quLbHqRaFtr86UEZ9MV4KubHQ" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="860" data-original-width="1739" height="158" src="https://blogger.googleusercontent.com/img/a/AVvXsEjh-hDf0zYhjlJYj6tDNrJ457-95usjGDSj8Rj75iMU4tML9dM6WXKbqTsLdD8JuiM8SioXMLb-Qtv-LLLpIV-_mUJWa7zuOyvOYCSY2mi3Eh0pTiO2WCi_D3W35KW6uVIa64O4z1h7RIoJuiz8BbTIadbo-quLbHqRaFtr86UEZ9MV4KubHQ" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">D365BC Sent Emails page</td></tr></tbody></table><br />This last image above shows the <b>Sent Emails</b> page in D365BC which is a key benefit. This is your central log of all emails from from the system.</div><h2 style="text-align: left;">Email Accounts - Shared Mailboxes</h2><div style="text-align: left;">Exchange Online shared mailboxes are about as easy to set up as the current user account type. The key difference being that when you use a shared mailbox the replies are directed back a single shared inbox - usually the main reason for having a shared mailbox in the first place!</div><div style="text-align: left;"><br /></div><div style="text-align: left;">Shared mailboxes in Exchange Online are great and free - the users that access the shared account must be licenses - and the sent email is saved in the individual users 'Sent Items' not the shared mailbox sent items folder.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">This means for shared mailboxes with the additional copy of the sent emails saved in D365BC again you have the benefit of a single place for all sent items.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">Let's create a shared mailbox:</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgVn8Jf9fd7sscsaJ86RFzHF9oCM54Cui4H0nxzJbSDflSqWF0GPjy4OdK5sLI128S4qes0ltHIlnayn7VQ-APC14T4ehBXq-czLIvE7D4nVU-6wyuVhkLklfcAk4vPXzFTPG2wBZN1xFaVsoXwSpEUta2b6XaxUG1Os7CxVUj494IMDYc_6A" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="541" data-original-width="1253" height="138" src="https://blogger.googleusercontent.com/img/a/AVvXsEgVn8Jf9fd7sscsaJ86RFzHF9oCM54Cui4H0nxzJbSDflSqWF0GPjy4OdK5sLI128S4qes0ltHIlnayn7VQ-APC14T4ehBXq-czLIvE7D4nVU-6wyuVhkLklfcAk4vPXzFTPG2wBZN1xFaVsoXwSpEUta2b6XaxUG1Os7CxVUj494IMDYc_6A" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Visit the Exchange admin center > Mailboxes</td></tr></tbody></table><br />Once created - update the 'Send as' and 'Read and Manage'. The main use case here is if you have staff who need to send updates but you don't want to access the inbox to view all the replies for example. Most of the time for small teams simply adding all the team members as 'Read and Manage' is suitable. </div><div style="text-align: left;"><br /></div><div style="text-align: left;"><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi863IxK5CtDktSjYzT07ylX0IxDN_Kxaaocpjwm_u5_x-bWkZmmkTp3MMYQpUKRcJ42vQPCBlwyv7TIwNkyXHHKTpVez70LVriEXoLWptdmMurKInATPYsxD1_sTtnwcZ2ApSgmgFp_Z2Y_THbWamKgS5NXjc2ZPaejGZsqrK957MHkugdyQ" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="647" data-original-width="1633" height="127" src="https://blogger.googleusercontent.com/img/a/AVvXsEi863IxK5CtDktSjYzT07ylX0IxDN_Kxaaocpjwm_u5_x-bWkZmmkTp3MMYQpUKRcJ42vQPCBlwyv7TIwNkyXHHKTpVez70LVriEXoLWptdmMurKInATPYsxD1_sTtnwcZ2ApSgmgFp_Z2Y_THbWamKgS5NXjc2ZPaejGZsqrK957MHkugdyQ" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">It can take a while for the permissions to propagate </td></tr></tbody></table><br />Sending from a shared mailbox:</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhL9SKobnbfcNiJDPC-gfWmijwZVJmoNSLJk2Hw_hgYdMbzqfPfMFiSbVI13NU-fiTx2jDEjB14vYI7jr1-fatt0C6UIKDf6kaFwkh6cIkbmb9ZowTIxsMSgFMmB16yi9PkYyf4ZEpdysNB5-itcCrRY_07O1UiRFd7WIQgY_Tdu0PngFitxA" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="516" data-original-width="1397" height="118" src="https://blogger.googleusercontent.com/img/a/AVvXsEhL9SKobnbfcNiJDPC-gfWmijwZVJmoNSLJk2Hw_hgYdMbzqfPfMFiSbVI13NU-fiTx2jDEjB14vYI7jr1-fatt0C6UIKDf6kaFwkh6cIkbmb9ZowTIxsMSgFMmB16yi9PkYyf4ZEpdysNB5-itcCrRY_07O1UiRFd7WIQgY_Tdu0PngFitxA" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">d365cdx is a shared mailbox where I have 'Read and Manage' permission </td></tr></tbody></table><br /></div><div style="text-align: left;"><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjHw7OzXmX1ntq8bUoZHqiutsnEOpAxSI_5gyyQZdFWkbvok_zeLx071it7EoNLX-9PF1Zo9_tdIx-hZJC62J8sQucfcd0ZEQ7pAmAHsxCnxMrAaU5aDnXzenzbgbnbn2_JOlXd7xi-J4wTKjKd4ZPiVuR2-ynXxR3ZWhkVJVdDZK4D6FfyLQ" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="426" data-original-width="1362" height="100" src="https://blogger.googleusercontent.com/img/a/AVvXsEjHw7OzXmX1ntq8bUoZHqiutsnEOpAxSI_5gyyQZdFWkbvok_zeLx071it7EoNLX-9PF1Zo9_tdIx-hZJC62J8sQucfcd0ZEQ7pAmAHsxCnxMrAaU5aDnXzenzbgbnbn2_JOlXd7xi-J4wTKjKd4ZPiVuR2-ynXxR3ZWhkVJVdDZK4D6FfyLQ" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The sent item is saved in my personal sent items folder</td></tr></tbody></table><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjROj3R-XkWdWXOv1b9MGFauIm7uyphiCE4e65sFArY02ur3ipapLmgNzsYLdp75_lq8bgFIt1uwvi1fcas8AOplogDSOjldVAjhcywfDi7o0ioRQu5mb10zsd1hdiRgPvo-E06-tduCJhvpJuXUVHdJFtwah4V1sfEbzsRU5ZT82HszZStsA" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="694" data-original-width="927" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEjROj3R-XkWdWXOv1b9MGFauIm7uyphiCE4e65sFArY02ur3ipapLmgNzsYLdp75_lq8bgFIt1uwvi1fcas8AOplogDSOjldVAjhcywfDi7o0ioRQu5mb10zsd1hdiRgPvo-E06-tduCJhvpJuXUVHdJFtwah4V1sfEbzsRU5ZT82HszZStsA" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><div style="text-align: center;">Replies will come back to the shared inbox - so anyone from the team can action.</div></td></tr></tbody></table><br /></div><div style="text-align: left;">While you can open a shared mailbox with the 'Open Another Account' action, most users usually just want to add the shared mailbox to their list of folders.</div><div style="text-align: left;">
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj5rWG_Ux_RoUSR-EMBZR0n3kXRho7BM72YiDa2iSvZa9Ykqc8S535fRuxnRoio_7Pvfj_qDgtEuOVqbzt50vn1BZHE3hX1A-zQMiF8C-aB6D0yXpNMI8tj4kEUzGt24JD0JqcxEXasiUtXJXAUqSeMEVB_7-RGZNv48t2d7VGHg5eMpcid8Q" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="639" data-original-width="1915" height="107" src="https://blogger.googleusercontent.com/img/a/AVvXsEj5rWG_Ux_RoUSR-EMBZR0n3kXRho7BM72YiDa2iSvZa9Ykqc8S535fRuxnRoio_7Pvfj_qDgtEuOVqbzt50vn1BZHE3hX1A-zQMiF8C-aB6D0yXpNMI8tj4kEUzGt24JD0JqcxEXasiUtXJXAUqSeMEVB_7-RGZNv48t2d7VGHg5eMpcid8Q" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Open a shared mailbox from the account dropdown at the top right</td></tr></tbody></table><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgXSq_P_sKkhOncYHjvN8M_xKW1a3ExHQXjmQNSj6FO4m8or01eNRuWdmNCWxuhylTl06C1ltgr9vr01aJ9eJ0lp--mkEny9TWwi1PuGJyTjJn0v3BMbMJRP6hnOBiFF633XekhwQh2Ga1jA8LzAYsMw0yS3ZlVEf7dTl1TY785vbOrqp_PGQ" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="571" data-original-width="603" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEgXSq_P_sKkhOncYHjvN8M_xKW1a3ExHQXjmQNSj6FO4m8or01eNRuWdmNCWxuhylTl06C1ltgr9vr01aJ9eJ0lp--mkEny9TWwi1PuGJyTjJn0v3BMbMJRP6hnOBiFF633XekhwQh2Ga1jA8LzAYsMw0yS3ZlVEf7dTl1TY785vbOrqp_PGQ" width="253" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Right click your own inbox and choose 'Add shared folder or mailbox'</td></tr></tbody></table></div><div style="text-align: left;"><br /></div><div style="text-align: left;">Again however your team choose to interact with shared mailbox - any emails sent from D365BC will be saved there, giving that single collection of all important sent emails. <br /></div><h2>Email Accounts - SMTP</h2><div>Sometimes its necessary to use good old SMTP to send your emails. I have used this approach where the from address needed to be just what we wanted. E.g. A shared mailbox from a different domain or some other totally different email address. While this can solve a problem in the short term, more and more email providers take a dim view of incoming email where the actual sending domain doesn't match the report from and reply-to. </div><div><br /></div><div>There are a raft of free and low cost solutions out there - which also usually provide some other benefits that you may find handy if you are sending a lot of mails.</div><div><br /></div><div>I've used MailGun <a href="https://www.mailgun.com/">https://www.mailgun.com/</a> and SendGrid <a href="https://sendgrid.com/">https://sendgrid.com/</a> in the past, both offer a free service for testing at least, and both support secure connections - which I'd always recommend to use.</div><div><br /></div><div>Grab the SMTP account details, create a new Email account of type SMTP and get sending!</div><div><br /></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhLa_-uhcICsg-FPEHJehvAJ9ouvhWnHBnqcMH8mbuVDlxSMCphxS5q7UhaBK5RXM6dWU5tDzOXP2_yMrLCVo733sj8seWsBf-5VULqANtb-lq_YuuZbXcTyqw1aATXJgab8E-9WjYdvpSgV-HuVKdW8J2_jxtn5VCr_ThONr13GiSQdjdDkA" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="553" data-original-width="590" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEhLa_-uhcICsg-FPEHJehvAJ9ouvhWnHBnqcMH8mbuVDlxSMCphxS5q7UhaBK5RXM6dWU5tDzOXP2_yMrLCVo733sj8seWsBf-5VULqANtb-lq_YuuZbXcTyqw1aATXJgab8E-9WjYdvpSgV-HuVKdW8J2_jxtn5VCr_ThONr13GiSQdjdDkA" width="256" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Always use a secure connection on port 587 </td></tr></tbody></table></div><h2 style="text-align: left;">User Email View Policies</h2><div>With the main benefit of the central location of all sent items - you also have to consider who should be able to see what. By default you can only see your own sent items in the <b>Sent Emails</b> page. To change that visit the <b>User Email View Policy</b> page to create a permission rule for all your users.</div><div><br /></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjfyciIeuvFABiagyqBH636Xb2HzNf-AlraItfchkR63t6VbdV-Rk0vQrLA96pF3ajBPgI9Cm78T8yfLsx3QqC6yfna6VeoRHNy8LzVtA3zy3GbgIhahEtAjzAN_tPx5ZoqLs-C3rwFOOqnxBvuVPsmUBpn30_MBmUeap7DcBQzKrmgY3IdyA" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="342" data-original-width="962" height="114" src="https://blogger.googleusercontent.com/img/a/AVvXsEjfyciIeuvFABiagyqBH636Xb2HzNf-AlraItfchkR63t6VbdV-Rk0vQrLA96pF3ajBPgI9Cm78T8yfLsx3QqC6yfna6VeoRHNy8LzVtA3zy3GbgIhahEtAjzAN_tPx5ZoqLs-C3rwFOOqnxBvuVPsmUBpn30_MBmUeap7DcBQzKrmgY3IdyA" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">User Email View Policies</td></tr></tbody></table><br /></div><div><b><i>In the next post I'll be looking at how to easily create dynamic templates for use with your emails and explore the email scenarios tool!</i></b></div><div><br /></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgytKL2EEcuqLPl_L4JquVDvmWkPFiRXNgLLllOoa6IKEZxEzbOGoLc5ScGQ-GdhfUbTCw0EOOUbWfq0MA-LeBGOyAbl3RDBuyN9ePXcgR8eJ8p61s77DuF8O7en5EebiakT3rLyf1uvQcD6oyE452wO4mwk7Co0mCY2CUlJKV_Sb3mfN9hcw" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="1048" data-original-width="1854" height="181" src="https://blogger.googleusercontent.com/img/a/AVvXsEgytKL2EEcuqLPl_L4JquVDvmWkPFiRXNgLLllOoa6IKEZxEzbOGoLc5ScGQ-GdhfUbTCw0EOOUbWfq0MA-LeBGOyAbl3RDBuyN9ePXcgR8eJ8p61s77DuF8O7en5EebiakT3rLyf1uvQcD6oyE452wO4mwk7Co0mCY2CUlJKV_Sb3mfN9hcw" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Do you want to automate things like this? Yes of course you do! </td></tr></tbody></table></div><div><br /></div>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-33483340150434664262023-05-06T13:48:00.005+00:002023-06-09T06:58:57.450+00:00Show Me the Money! or Check Who Approved the Document You Are About to Pay in Dynamics 365 Business Central<div>Power BI and Dynamics 365 Business Central work great together. In a previous blog post, we looked at publishing a custom dataset from the wizard in BC. In this blog post, we will take things a step further by creating a custom query and publishing that for use in Power BI.</div><div><br /></div><div>The requirement here is simple enough. Running the suggest vendor payment function can create a payment batch that has been summarised by vendor to pay all the purchases due. </div><div><br /></div><div>Great, but now we want an review all the approvals as one last step before posting the Payment Journal. </div><div><br /></div><div>This can be done manually on a line-by-line basis:</div><div><br /></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh3Eq-LT3ChoMM4t1RutQhqesUnrsc1NDho917q4GjS5nK8lvsH923AAw-gK-9J9cXDqvt9QpbXbg8LP1MqdBrd80XjvqpmGNrb1_XKfvfhvBZUkZXE-6M6gO8K9ys6ES9IwrQBmuyiqWF96Lh1Kt_mIg6uBiI0DkuRLe7NcCVXnmVLxC9oIg" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="535" data-original-width="1442" height="119" src="https://blogger.googleusercontent.com/img/a/AVvXsEh3Eq-LT3ChoMM4t1RutQhqesUnrsc1NDho917q4GjS5nK8lvsH923AAw-gK-9J9cXDqvt9QpbXbg8LP1MqdBrd80XjvqpmGNrb1_XKfvfhvBZUkZXE-6M6gO8K9ys6ES9IwrQBmuyiqWF96Lh1Kt_mIg6uBiI0DkuRLe7NcCVXnmVLxC9oIg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Lets see the documents that have been applied<br /></td></tr></tbody></table><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh15ol3HsiFoexc5wKcfA9CF05hmAuZ7dkNDIOdQWwSAhbHMrj2nMeTjuO4qRrDobVqxCE3X6dWd1OK05OdQHDXU9p9Z5hR9Bd3mVN1ItVMGNWMLS2EuI_s9eI4U7Db1XqY59v0Q2cSnqKK5sByU42YhQyhMJKCsvCCTDJA4k1vNbs755lkKw" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="929" data-original-width="1847" height="161" src="https://blogger.googleusercontent.com/img/a/AVvXsEh15ol3HsiFoexc5wKcfA9CF05hmAuZ7dkNDIOdQWwSAhbHMrj2nMeTjuO4qRrDobVqxCE3X6dWd1OK05OdQHDXU9p9Z5hR9Bd3mVN1ItVMGNWMLS2EuI_s9eI4U7Db1XqY59v0Q2cSnqKK5sByU42YhQyhMJKCsvCCTDJA4k1vNbs755lkKw" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Picking a single line we can click though to the document card</td></tr></tbody></table><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhfSsHTpClbHEw7lDLXqrDGcxxPElBZ7nhk8m6xLHHlvBMYup1qM_lrzMLqZYB2-3zI1Gmigs5TLhpV17a4D5z4VClGmHK9uPWZUu9YzOmf37o6o14gy51L9024uLocpIrDwm7854sBS6dKI6FD_vHX-0IXAj2OjUinW2JRH3Bz2uXQcfiONQ" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="779" data-original-width="1365" height="183" src="https://blogger.googleusercontent.com/img/a/AVvXsEhfSsHTpClbHEw7lDLXqrDGcxxPElBZ7nhk8m6xLHHlvBMYup1qM_lrzMLqZYB2-3zI1Gmigs5TLhpV17a4D5z4VClGmHK9uPWZUu9YzOmf37o6o14gy51L9024uLocpIrDwm7854sBS6dKI6FD_vHX-0IXAj2OjUinW2JRH3Bz2uXQcfiONQ" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">From the document card we can open the Approval entries </td></tr></tbody></table><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhULm92tAJvxb8W2SQBWS9VWK0s49veyaw-TfJA6KHfiI50iN4UsETM7r4GSLgeRjtJFmJ8oK_7N7OAwXD5lmPEItiAxqQU72cVjYLGZVfkdJnXBhQ16TNDHFTtU4qKLk0qDu91vDpzVBtPWrfkACuaV1OkvjxpMp2ChroiaZAaE3EQeyIpoQ" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="279" data-original-width="1357" height="66" src="https://blogger.googleusercontent.com/img/a/AVvXsEhULm92tAJvxb8W2SQBWS9VWK0s49veyaw-TfJA6KHfiI50iN4UsETM7r4GSLgeRjtJFmJ8oK_7N7OAwXD5lmPEItiAxqQU72cVjYLGZVfkdJnXBhQ16TNDHFTtU4qKLk0qDu91vDpzVBtPWrfkACuaV1OkvjxpMp2ChroiaZAaE3EQeyIpoQ" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Approval entries</td></tr></tbody></table><br /><br />But even for small payment runs that's a lot of clicking, we just want a simple overview!</div><h3 style="text-align: left;">Get the data published as a web service </h3><div>The relationships that hold this info together are:</div><div><br /></div><div><b>[Gen. Journal Line].[Applied-to ID] = [Vendor Ledger Entry].[Applies-to ID]</b></div><div><br /></div><div>That gets us from the payment journal to the line in the Vendor ledger entry; from there to link to the approvals its simply the document numbers:</div><div><br /></div><div><b>[Vendor Ledger Entry].</b><b>[Document No] = [Posted Approval Entry].</b><b>[Document No]</b></div><div><br /></div><div>Using that general info you can create a query object and publish to your SaaS instance of BC</div><div><br /></div>
<script src="https://gist.github.com/andywingate/ca58ca1c174cbc8986dca00f7873b131.js"></script><div>It was necessary to exclude rows with a blank Applies-to ID as this is not a primary key and if you don't exclude you can end up matching blank to blank and get a lot of unwanted data! </div><div><br /></div>Once pushed to BC this should be published from the Web Services page:<div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjdSh57yEgiRS9IUSFML-sgV71eJzHPicLVFeijBDVVHhFSAaI40nmIOIb7iKbV6E8_Nw5N6AKAw8aMDBarcktNgZko-KZmKtdJRjY8UF4jbc2wQKqudX1zTEV5UucWMxpRCCLoGba95tappS4dOFjG36Me4057FM2wa248lXw9-mun5nU4XA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="219" data-original-width="1208" height="58" src="https://blogger.googleusercontent.com/img/a/AVvXsEjdSh57yEgiRS9IUSFML-sgV71eJzHPicLVFeijBDVVHhFSAaI40nmIOIb7iKbV6E8_Nw5N6AKAw8aMDBarcktNgZko-KZmKtdJRjY8UF4jbc2wQKqudX1zTEV5UucWMxpRCCLoGba95tappS4dOFjG36Me4057FM2wa248lXw9-mun5nU4XA" width="320" /></a></div><div><br /></div><h3 style="text-align: left;">Grab the data into Power BI, create a layout and publish</h3></div><div>Which can then be grabbed in PowerBI using the built in data source for BC SaaS</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhFQWJ7jhdEdeDmauYeVjSKM6uVCNSmVag98fsoCRjWpN4E7cs5S_Dxx5BbFTRJsZwLXW9bybC9nWQpR8POCP_rX8r0MQA-YGbfDjGirDgtspPx85BIwldbOY0s2mhZRKtmM4y3P8Z6YDHPkm9e7lOU6o_VvlLAXK_rZil46p7qNi1uQH0K7w" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="660" data-original-width="600" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEhFQWJ7jhdEdeDmauYeVjSKM6uVCNSmVag98fsoCRjWpN4E7cs5S_Dxx5BbFTRJsZwLXW9bybC9nWQpR8POCP_rX8r0MQA-YGbfDjGirDgtspPx85BIwldbOY0s2mhZRKtmM4y3P8Z6YDHPkm9e7lOU6o_VvlLAXK_rZil46p7qNi1uQH0K7w" width="218" /></a></div><div><br /></div>The Power BI layout I've gone with a very simple slider to pick the Payment Journal batch and a matrix table to show the Payment Journal document lines, related vendor ledger entry document numbers and values and naturally the approval details - where an approval was completed.</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiewexrLGo4zatunWCAD3RsLoY0AhyjsWeLXIdguZPaR7hskVYSriLfjP7BZQMctVQUkBwvB6Wo1tPjwDRJCUYVHvRB3D2C2_5rb8udmFtEMvM6TYL-Dalc6vlSIKNP5993uqGfpqD4p0vRaSlwQ2VtFqGesBEIa6o47312kgkoIWG743y7tQ" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="839" data-original-width="1286" height="209" src="https://blogger.googleusercontent.com/img/a/AVvXsEiewexrLGo4zatunWCAD3RsLoY0AhyjsWeLXIdguZPaR7hskVYSriLfjP7BZQMctVQUkBwvB6Wo1tPjwDRJCUYVHvRB3D2C2_5rb8udmFtEMvM6TYL-Dalc6vlSIKNP5993uqGfpqD4p0vRaSlwQ2VtFqGesBEIa6o47312kgkoIWG743y7tQ" width="320" /></a></div><br />Once published the Power BI report can be surfaced in Business Central or accessed via a custom action from the payment journal page perhaps - something to look at next time...</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhRnNp3LyUnxbNO755Y7uCjSZVeOCKP8UeIlVmZcErzNeVUXr3oVp4lxs9_BlQPtskoqcVqjcMTxuQbEdPe3DSUy42oa2zC57LH69GKNseyQte08wjx5vCGlOfrmqKJvqwkpbR_dr5wN-K-zG7Efx9WDbavZfH1jGvDj0Mw5IdbYmBtJBlYgQ" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="960" data-original-width="1831" height="168" src="https://blogger.googleusercontent.com/img/a/AVvXsEhRnNp3LyUnxbNO755Y7uCjSZVeOCKP8UeIlVmZcErzNeVUXr3oVp4lxs9_BlQPtskoqcVqjcMTxuQbEdPe3DSUy42oa2zC57LH69GKNseyQte08wjx5vCGlOfrmqKJvqwkpbR_dr5wN-K-zG7Efx9WDbavZfH1jGvDj0Mw5IdbYmBtJBlYgQ" width="320" /></a></div><br /> <br /><br /></div>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-80967954304666605082023-04-07T14:53:00.005+00:002023-04-15T09:49:04.447+00:00How to filter the current user with measures in your Dynamics 365 Business Central embedded Power BI report.Embedding <a href="https://powerbi.microsoft.com/" target="_blank">Power BI</a> reports directly in <a href="https://dynamics.microsoft.com/en-gb/business-central/overview" target="_blank">Dynamics 365 Business
Central</a> is one of the many synergies of the <a href="https://www.office.com/" target="_blank">Microsoft 365</a>
platform. Giving users context relevant analysis right on the page where they need to see it helps make faster and better decisions. <div><br /></div>
<div>Previously I have looked at <a href="https://blog.wingateuk.com/2023/02/yellow-excel-or-how-i-learned-to-stop.html" target="_blank">how to easily publish a new data set as a web service from BC and use this data in a Power BI
report shown on the BC role center page</a>.</div>
<div><br /></div>
<div>An interesting requirement that came up this week was the need to filter a BI report to only show
data related to the current user.</div>
<div><br /></div>
<div>Initially <a href="https://learn.microsoft.com/en-us/power-bi/enterprise/service-admin-rls" target="_blank">row
level security</a> was considered; but this was not as easy to implement as using a basic visual filter and the
'Measure of a Measure' approach. Credit goes to the Power BI community, the original solution was described <a href="https://community.powerbi.com/t5/Desktop/Show-Current-Logged-in-User-data-only/td-p/2219446" target="_blank">here </a>and <a href="https://community.powerbi.com/t5/Developer/RLS-vs-Filter-for-current-user/m-p/329584" target="_blank">here</a>. </div>
<div><br /></div>
<div>This approach relies on your data model having the user emails on the rows you wish to filter to. Add
2 new measures to your data model to the table that shows the user emails. </div><div><br /></div><div><b>Adding a measure:</b></div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj82yZIa5BWQ4pQKoI44od-Eyy3TM5j-h_SbWmwRZxz-bw6EedT33xZ7toZiUZj6iw3JilOS9X27Ctvc3cREPvUeZXdne-QaFnyM9Umq4Kfs79KVZFm9Di6USaf3dGbwn4iEOU7cxA6rLTYAA2CPyhL8356KrTVYI-ya-vb1INfXSJPsbPZVA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="679" data-original-width="1237" height="176" src="https://blogger.googleusercontent.com/img/a/AVvXsEj82yZIa5BWQ4pQKoI44od-Eyy3TM5j-h_SbWmwRZxz-bw6EedT33xZ7toZiUZj6iw3JilOS9X27Ctvc3cREPvUeZXdne-QaFnyM9Umq4Kfs79KVZFm9Di6USaf3dGbwn4iEOU7cxA6rLTYAA2CPyhL8356KrTVYI-ya-vb1INfXSJPsbPZVA" width="320" /></a></div><br />
<p><b>Measure 1:</b></p></div><div>
<pre>CurrentUser = USERPRINCIPALNAME() </pre>
<p><b>Measure 2:</b></p>
<pre>FilterByViewer = IF(SELECTEDVALUE(UserApprovalSetup[E_Mail])=[CurrentUser],1,0)</pre>
<p>In this example the current table was 'UserApprovalSetup' and the column with user email in was 'E_Mail'.</p><p>The second measure now returns a 1 on any row where the 'E_mail' in the underlying table matches the current user. So we can do a simple visual filter: </p><p></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiLABpnIcJGOkHWu_YgbsrDwrtyWZvGpIn9e2rAKhbuD-iT2sNBcnt9QCWFNQMMvruH9VR4Z0LmhQMJR8EAG4yb1rvZ7HQ5-FxLR4qBsHOHSnfrWCvGB4UQgRT0wLO13nn4YhX0nredEvy9wgUSeSnl0DlHwmh5IMWiV76-255EGn_E0aDaTg" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="521" data-original-width="204" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEiLABpnIcJGOkHWu_YgbsrDwrtyWZvGpIn9e2rAKhbuD-iT2sNBcnt9QCWFNQMMvruH9VR4Z0LmhQMJR8EAG4yb1rvZ7HQ5-FxLR4qBsHOHSnfrWCvGB4UQgRT0wLO13nn4YhX0nredEvy9wgUSeSnl0DlHwmh5IMWiV76-255EGn_E0aDaTg" width="94" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Visual filter on the 2nd measure 'FilterByViewer'. Lock or hide if necessary.</td></tr></tbody></table><p>That's it! very simple to use.<br /><br /></p></div>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-19027613431953504792023-03-29T07:31:00.009+00:002023-04-01T13:16:43.573+00:00Making the most of your ERP - Business Central for Operations<p>
Check out the blog post I wrote with the amazing Incremental marketing team: <a
href="https://incrementalgroup.co.uk/2023/03/22/making-the-most-out-of-your-erp-system/">Making the most out of
your ERP system Incremental Group</a> which I have re-produced below for posterity!
</p>
<h1>Making the most out of … your ERP system</h1>
<h2>Introduction</h2>
<p>
This week we share the third blog in our series: 'Making the most of the Microsoft technology stack', showcasing the
power of the Microsoft stack in delivering innovative, hybrid solutions to fit your organisation's needs.
</p>
<h4>Making the most out of Dynamics 365 Business Central - a focus on operations</h4>
<p>
Every business needs to get value from its IT systems through better processing efficiency and improved data
visibility, leading to better resource allocation and faster return on investment. For operations managers, this
means staying on top of inventory, order fulfilment and customer service, whilst finding ways to streamline
processes and enhance productivity.
</p>
<p>
Microsoft <a href="https://incrementalgroup.co.uk/services/dynamics-365/dynamics-365-business-central/">Dynamics 365
Business Central</a> is a powerful cloud-based solution that offers a wide range of capabilities, from financial
management and supply chain operations to project management and sales. With Dynamics 365 Business Central
organisations can simplify and automate key business processes, gain insights into performance and make data-driven
decisions.
</p>
<p>
The real power of Dynamics 365 Business Central lies in its integration with the rest of the Microsoft
technology stack. By combining Dynamics 365 Business Central with other Microsoft tools and technologies, such
as
<a href="https://incrementalgroup.co.uk/partners/power-bi/">Power BI</a>,
<a href="https://incrementalgroup.co.uk/partners/microsoft-powerapps/">Power Apps</a>,
<a href="https://incrementalgroup.co.uk/services/microsoft-office-365/microsoft-teams/">Teams</a> and
<a href="https://incrementalgroup.co.uk/services/microsoft-office-365/">Microsoft 365</a> (previously known as
Office 365) apps, organisations can create a truly fit-for-purpose
holistic system to meet their unique business needs.
</p>
<p>
We have shared below some key opportunities that can be created for operations managers using Dynamics 365
Business Central and Microsoft 365.
</p>
<h3>Opportunities for operations managers</h3>
<p>
<b>Control business processes:</b> Without a centralised
system it can be difficult to keep track of inventory and orders. Dynamics 365 Business Central provides
real-time insights and data across the operation, enabling you to make better decisions and keep your processes
running smoothly. The Microsoft 365 toolkit adds even more functionality, such as <a
href="https://incrementalgroup.co.uk/services/microsoft-office-365/">SharePoint</a> for
document management and <a href="https://incrementalgroup.co.uk/services/power-automate/">Power Automate</a> to
simplify repetitive tasks to prevent reliance on multiple spreadsheets as a critical
business tool.
</p>
<p>
Figure 1 shows the use of a Power Automate flow, built from an out-of-the-box template to manage item approvals
and keep control of the product catalogue. Figure 2 shows the powerful <a
href="https://learn.microsoft.com/en-us/dynamics365/business-central/inventory-how-availability-overview">item
availability by event</a>, which allows you to review projected stock balances of items over time to better plan
work and replenishment.
</p>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;"><a
href="https://blogger.googleusercontent.com/img/a/AVvXsEgkH7IrS8N3UVHH5p7k7ADXcAYchCbR4RLDuSvp7XF5i2ct4HesO0nTkISN0jzOVnNkL0GMag6TBenUTQZt41Dt25D1Qv9PggognLgsY_o3Yu5h8MH3_pDVUPkKztVuEcSEFnFesALuE2V-obZjYz5Y0Z8WCj6ExWTWOAINKmO0LYRuRyJ_xw"
style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="1032"
data-original-width="1920" height="172"
src="https://blogger.googleusercontent.com/img/a/AVvXsEgkH7IrS8N3UVHH5p7k7ADXcAYchCbR4RLDuSvp7XF5i2ct4HesO0nTkISN0jzOVnNkL0GMag6TBenUTQZt41Dt25D1Qv9PggognLgsY_o3Yu5h8MH3_pDVUPkKztVuEcSEFnFesALuE2V-obZjYz5Y0Z8WCj6ExWTWOAINKmO0LYRuRyJ_xw"
width="320" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">Figure 1: One of the many Power Automate templates
available for use out-of-the-box ready to be adapted to your needs. This flow manages the approval of
new 'Items' (goods to be bought and sold) being added to the system.</td>
</tr>
</tbody>
</table><br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;"><a
href="https://blogger.googleusercontent.com/img/a/AVvXsEhHHWW2KetIASGqjvZyMrR3DCGEATBKTi44ERifKIsyujbCRAo4P0T2ZRgwh_O1wFFpf5n47mDLd371HEEgNrkPUvo4xuMh3aZT8hBOu_OtD1NQ69uMBgJBduW6d9_ND5S2G8YeP20s6SEDPg0M9HGJM3NrGi_jax2hM004lMlNl4XKJ3uE-g"
style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="1032"
data-original-width="1920" height="172"
src="https://blogger.googleusercontent.com/img/a/AVvXsEhHHWW2KetIASGqjvZyMrR3DCGEATBKTi44ERifKIsyujbCRAo4P0T2ZRgwh_O1wFFpf5n47mDLd371HEEgNrkPUvo4xuMh3aZT8hBOu_OtD1NQ69uMBgJBduW6d9_ND5S2G8YeP20s6SEDPg0M9HGJM3NrGi_jax2hM004lMlNl4XKJ3uE-g"
width="320" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">Figure 2: Real-time 'Item Availability', showing future
events with the option to include demand forecasts and planning suggestions.<br /></td>
</tr>
</tbody>
</table><br />
<p>
<b>Improve inventory management:</b> Keeping track of inventory, managing procurement and preventing stockouts can
be a timely and inefficient process without the right tools. Dynamics 365 Business Central provides a single system
for all inventory and orders, enabling you to monitor stock levels and set up reorder points to ensure you always
have the right amount of stock on hand. With Power BI, you can visualise your inventory data forecast demand and
optimise your inventory levels for maximum
efficiency. Figure 3 shows the <a
href="https://learn.microsoft.com/en-us/dynamics365/business-central/production-about-planning-functionality">Requisition
Worksheet</a>, a powerful tool that can be used to plan and replan replenishment of stocks across all locations.
In the example below, the system is cancelling an unnecessary purchase and re-planning the purchases on different
days from a different vendor to get the best price. Figure 4 shows one of the template Power BI dashboards available
from AppSource, which can be connected to your system and used right away or used as a basis for your own
dashboards. Full guidance is provided on <a
href="https://learn.microsoft.com/en-us/dynamics365/business-central/admin-powerbi-setup">setting
up bespoke Power BI</a> reports on <a
href="https://learn.microsoft.com/en-us/dynamics365/business-central/admin-powerbi-setup">Microsoft's
Learn portal.</a>
</p>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;"><a
href="https://blogger.googleusercontent.com/img/a/AVvXsEhrqUC2qm_rtq29EXAQTF8gs6LPenxEXPSZxlHsEc4CjPsbPVFok1FuzxOjzpvtq9JSOz_o9y1hmksCz6QLM00WXj5e4iTArh1SYhOMrwLNnvmOYqraRNEJE2ExKzDAND4DUaoqUMv1J7XlG7idlVlW-LYv3fCi1pGQPjaY77TwIlyMj02SCQ"
style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="1032"
data-original-width="1920" height="172"
src="https://blogger.googleusercontent.com/img/a/AVvXsEhrqUC2qm_rtq29EXAQTF8gs6LPenxEXPSZxlHsEc4CjPsbPVFok1FuzxOjzpvtq9JSOz_o9y1hmksCz6QLM00WXj5e4iTArh1SYhOMrwLNnvmOYqraRNEJE2ExKzDAND4DUaoqUMv1J7XlG7idlVlW-LYv3fCi1pGQPjaY77TwIlyMj02SCQ"
width="320" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">Figure
3: The 'Requisition Worksheet' simplifies the creation of replenishment orders across all items,
selecting the lowest price vendor and applying re-ordering rules set up per stock-keeping
unit.</td>
</tr>
</tbody>
</table><br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;"><a
href="https://blogger.googleusercontent.com/img/a/AVvXsEigO4s2ms0u7KxMMeOSwtqXQuLBLWrN1WHeIKt9RyktsqHxv7pASx4kMVRmdq1yme55hmSncZauYWdGajihmcop-ZvgvGTKm60wDJRVBTdluzLyxn29xF4mMpt2FgJfIKZ4Raoobecce6EG62bVyCGDjXRRG8LPHZ6vUExQZAy9wtfgY1eilg"
style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="955"
data-original-width="1342" height="228"
src="https://blogger.googleusercontent.com/img/a/AVvXsEigO4s2ms0u7KxMMeOSwtqXQuLBLWrN1WHeIKt9RyktsqHxv7pASx4kMVRmdq1yme55hmSncZauYWdGajihmcop-ZvgvGTKm60wDJRVBTdluzLyxn29xF4mMpt2FgJfIKZ4Raoobecce6EG62bVyCGDjXRRG8LPHZ6vUExQZAy9wtfgY1eilg"
width="320" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">Figure
4: An out-of-the-box Power BI report showing a dashboard of item sales. This template Power BI
app is available for free from <a
href="https://appsource.microsoft.com/en-us/product/power-bi/microsoftdynsmb.businesscentral_sales?exp=ubp8&tab=Overview">AppSource</a>
</td>
</tr>
</tbody>
</table>
<p>
<b>Simplify order fulfilment:</b> Delayed or inaccurate
order fulfilment can lead to unhappy customers and lost revenue. Dynamics 365 Business Central helps you manage
orders from start to finish, from sales quotes and orders to shipping and invoicing. The Microsoft 365 toolbox
adds even more functionality, such as Teams for collaboration and communication and Power Automate for automated
order processing. <a
href="https://learn.microsoft.com/en-us/dynamics365/business-central/receivables-send-reminders">Overdue
documents</a> can be used to trigger <a
href="https://learn.microsoft.com/en-us/training/modules/use-power-automate/">Power
Automate Flows</a> and post reminders to internal teams. <a
href="https://incrementalgroup.co.uk/services/dynamics-365/microsoft-power-virtual-agents/">Power
Virtual Agents</a> can help provide enhanced self-service to customers who may wish to enquire about
their order status or stock of a particular item.
</p>
<p>
Figure 5 shows a list of stock-keeping units surfaced in a Teams channel. One of the huge benefits of Dynamics
365 Business Central is that lists and pages can be shared this way with all users in your organisation who have
access to Teams, simply with a standard M365 license.</p>
<p>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;"><a
href="https://blogger.googleusercontent.com/img/a/AVvXsEjbjpMr4RYzPeeAzOAFhIrNc6EO7utb-nwsmoqPe7CXJHFeVGzOGqVdl_jTxVcZgvGp0ddFc0Mq6wsEHZgUFOJkxwGXkxXe5KTFjtF_7xgWiUI5qQlpu_cnDemrfs9LE414nBBfvk67xORdGMkt1YsW8KPZxDvwDHtYdKG4y0vgAJIwaMJZsQ"
style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="966"
data-original-width="1381" height="224"
src="https://blogger.googleusercontent.com/img/a/AVvXsEjbjpMr4RYzPeeAzOAFhIrNc6EO7utb-nwsmoqPe7CXJHFeVGzOGqVdl_jTxVcZgvGp0ddFc0Mq6wsEHZgUFOJkxwGXkxXe5KTFjtF_7xgWiUI5qQlpu_cnDemrfs9LE414nBBfvk67xORdGMkt1YsW8KPZxDvwDHtYdKG4y0vgAJIwaMJZsQ"
width="320" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">Figure
5: A Teams channel showing content from Dynamics 365 Business Central. Content can be surfaced
directly in Teams enabling wider circulation and visibility of operational data without the need
for additional Dynamics 365 Business Central licenses.</td>
</tr>
</tbody>
</table><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container"
style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;"><a
href="https://blogger.googleusercontent.com/img/a/AVvXsEikaUi1HXRhnL_yk87hw396qxmuGRCCed2ovah460SuJ7pzK9RPcHL6YH9QK6v5CtzbPsnKtu9T14Q9-UDlJvy1JTiXX_sYPafrz6RQfUkGoGkdZvoJMQy2i0d6PcamjI2Nd0Ob6u24otHhbNBz9_3iJkvL9ZbX_GIViwHxcvRGHAKLuLK8OA"
style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="960"
data-original-width="1375" height="223"
src="https://blogger.googleusercontent.com/img/a/AVvXsEikaUi1HXRhnL_yk87hw396qxmuGRCCed2ovah460SuJ7pzK9RPcHL6YH9QK6v5CtzbPsnKtu9T14Q9-UDlJvy1JTiXX_sYPafrz6RQfUkGoGkdZvoJMQy2i0d6PcamjI2Nd0Ob6u24otHhbNBz9_3iJkvL9ZbX_GIViwHxcvRGHAKLuLK8OA"
width="320" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">Figure
6: Power Automate can post adaptive cards to Teams - with summary information and a link to the
record. Furthermore, the documents can be worked on directly in Teams, by Business Central
users, allowing real-time collaboration.</td>
</tr>
</tbody>
</table><br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;"><a
href="https://blogger.googleusercontent.com/img/a/AVvXsEiQsAsaIXUurXsrC__TgJEiwOnQtWJWGpzpCSjD6YR_FFIzCE9RPUTAQJerjoa7zk-ivyxK49QYS0ufYN5Ui_B_YJjAS7EOqlbS2cOVPcZPWS0RLiDsE6NJ1fm-F0Ii_qR6XWdwB_GNLb_FOuKmz2O-X_BDBkjN34iggBvyGLH8ZY4CPHLVMg"
style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="1032"
data-original-width="1920" height="172"
src="https://blogger.googleusercontent.com/img/a/AVvXsEiQsAsaIXUurXsrC__TgJEiwOnQtWJWGpzpCSjD6YR_FFIzCE9RPUTAQJerjoa7zk-ivyxK49QYS0ufYN5Ui_B_YJjAS7EOqlbS2cOVPcZPWS0RLiDsE6NJ1fm-F0Ii_qR6XWdwB_GNLb_FOuKmz2O-X_BDBkjN34iggBvyGLH8ZY4CPHLVMg"
width="320" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">Figure
7: Sales order list page, showing requested delivery dates, order status and shipping
status.</td>
</tr>
</tbody>
</table><br />
<p>
<b>Exploit data-driven insights:</b> Without
all your relevant data in the right place it can be hard to generate insights and make informed decisions to
optimise operations. Dynamics 365 Business Central provides real-time insights and data across your business
operations, enabling you to make data-driven decisions and keep your processes running smoothly. The Microsoft 365
stack adds even more functionality, such as Power BI for advanced data analytics and Power Apps for custom app
creation to help create a fully bespoke solution for the needs of your business.
</p>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;"><a
href="https://blogger.googleusercontent.com/img/a/AVvXsEgxGjMzxGp5EAnwxYhpad19IgUn2KKLen36iA9xwR0xVIsR3FOeT230fLcfNcCS9nw2GC8WLSSIPZkZrTNWYQWc-C0nPdTPbi_H82_YtMW-b7gncFyRY7n_QtwYKfg3c3YcfpLJ_vlYgHm-oazD1PEYVus2W9YwmMFWN-xFBZR_eMbxg_uoSw"
style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="955"
data-original-width="1576" height="194"
src="https://blogger.googleusercontent.com/img/a/AVvXsEgxGjMzxGp5EAnwxYhpad19IgUn2KKLen36iA9xwR0xVIsR3FOeT230fLcfNcCS9nw2GC8WLSSIPZkZrTNWYQWc-C0nPdTPbi_H82_YtMW-b7gncFyRY7n_QtwYKfg3c3YcfpLJ_vlYgHm-oazD1PEYVus2W9YwmMFWN-xFBZR_eMbxg_uoSw"
width="320" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">Figure
8: An out-of-the-box Power BI report looking at financial and operational KPI data in real-time.
This template Power BI app is available for free from <a
href="https://appsource.microsoft.com/en-us/product/power-bi/microsoftdynsmb.businesscentral_finance?exp=ubp8&tab=Overview">AppSource</a>
</td>
</tr>
</tbody>
</table><br>
<h2>Get the most out of Dynamics 365 Business Central</h2>
<p>
Dynamics 365 Business Central paired with Microsoft 365 and the Power Platform can provide operations managers
with a range of tools to empower them to efficiently manage inventory, purchase orders and so much more. The
opportunity to use real-time insights, data-driven decision making and automated workflows unlocks the potential
for businesses to optimise their operations and achieve greater efficiency, productivity and profitability.
</p>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-68543392649588411362023-03-18T15:27:00.008+00:002023-03-29T07:32:09.202+00:00Business Central & Power Automate - Post to teams / Post invoices<p>To make the most of Dynamics 365 Business Central you should invest some time to understand how Power Automate works. In this example I'll start off by simply connecting BC to teams with some flows.</p><p>Teams is especially handy alongside BC as regular business users (with a standard Microsoft 365 / Office 365 license) can view BC records posted to teams. This is pretty huge, as it means you can provide visibility of records across the whole business without also needing to have everyone setup as a licensed BC user. Just turn on access for M365 users:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjPiy61zoUU3QhdZVB7elWWOzEA_6zkP4IeeBtnAtLBgGoIXNlFf3emuxEJIjRMRIIl7tv3Keio0v2f288hO4iyHzZ5dzXjTcNcWGklFzd3eC1nxNwUZ3aLTUgilf3JRCjepOIBFfw7adxZ2YGaSNHzNTQGN-dDjYV47XFdMsfFU9uY0xnG3Q" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="333" data-original-width="831" height="160" src="https://blogger.googleusercontent.com/img/a/AVvXsEjPiy61zoUU3QhdZVB7elWWOzEA_6zkP4IeeBtnAtLBgGoIXNlFf3emuxEJIjRMRIIl7tv3Keio0v2f288hO4iyHzZ5dzXjTcNcWGklFzd3eC1nxNwUZ3aLTUgilf3JRCjepOIBFfw7adxZ2YGaSNHzNTQGN-dDjYV47XFdMsfFU9uY0xnG3Q=w400-h160" width="400" /></a></div><br />With Power Automate you can setup action buttons to post to teams on demand or create "when a record changes" triggers to post if particular thing happens - that you want to notify a team about.<p></p><p>For these flows I'm going to focus on the use of adaptive cards also; as these specifically allow any user of teams to open the BC record in teams and take advantage of the "Access with M365 license" feature. <a href="https://learn.microsoft.com/en-gb/dynamics365/business-central/admin-access-with-m365-license">Business Central Access with Microsoft 365 licences - Business Central | Microsoft Learn</a></p><p>Let's look at the "push a button" flow and see a few things we could do with that.</p><p>Create a new flow, pick the Instant cloud flow; <a href="https://make.powerautomate.com">Microsoft Power Automate</a></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg0X5tDtu31T3MaYeAcwfP1NqfwnDIdm56QzWmqWlaHyCnOblyWPLyq1kxvRQyB9WeyaHOZ6H7GA345XcxQLsN_PPgYXQfzvOmsGd7Xfd-Fe2hQS3wsBnNwrVEhHO-KmKBr7o-tfXZuYEEWly8mRHaJQzKyaxdwTp8H2khP1lABzpwxlhKuDg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="548" data-original-width="962" height="228" src="https://blogger.googleusercontent.com/img/a/AVvXsEg0X5tDtu31T3MaYeAcwfP1NqfwnDIdm56QzWmqWlaHyCnOblyWPLyq1kxvRQyB9WeyaHOZ6H7GA345XcxQLsN_PPgYXQfzvOmsGd7Xfd-Fe2hQS3wsBnNwrVEhHO-KmKBr7o-tfXZuYEEWly8mRHaJQzKyaxdwTp8H2khP1lABzpwxlhKuDg=w400-h228" width="400" /></a></div><p></p><p></p><p><br /></p>The name of the flow is what will show in BC as the menu action - so name it with that in mind! Pick the 'For selected record (V3)' trigger.<p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhKtJwJqqKAivvULQyEExP1EtBzRf6tynqhj8sW02iEe8SdIR9HS3fv0No_AiuGavCkl97JbW6T59K5nDeSIHDM2_72cZcCEZL_bN89VZe36GyTyiKYBj44HNtixM3pm4LmQy4JkLpqAB6ZHgJ0UfRmXjP5WJXlxBPq4DLE_RQbqkdpM2gdsw" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="590" data-original-width="905" height="261" src="https://blogger.googleusercontent.com/img/a/AVvXsEhKtJwJqqKAivvULQyEExP1EtBzRf6tynqhj8sW02iEe8SdIR9HS3fv0No_AiuGavCkl97JbW6T59K5nDeSIHDM2_72cZcCEZL_bN89VZe36GyTyiKYBj44HNtixM3pm4LmQy4JkLpqAB6ZHgJ0UfRmXjP5WJXlxBPq4DLE_RQbqkdpM2gdsw=w400-h261" width="400" /></a></div><br /><br />On the trigger, you can control which pages in BC the action will be available on. For this example I want my new "Post to teams" button to show up in the PRODUCTION environment; Inventory Demo company and only on Page 42 - the Sales Order card page.<p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiMvlSyZzf4vOmh0IEpaDj3QUD5xG61yWuTlC1Mx7M3wQ1Anyp8vfshdJj2yOdQ_uq-irzMjVB7Md84kdWMBnAjGI9qJtyrkPyVk4NnyWtow8WnmHx_x-hA2YNM6KR9RzEIUVOVTwpoc8orGh41qyu_cNC7iBKqWgW7Ax-b4weFRdQTSiCPrw" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="242" data-original-width="615" height="158" src="https://blogger.googleusercontent.com/img/a/AVvXsEiMvlSyZzf4vOmh0IEpaDj3QUD5xG61yWuTlC1Mx7M3wQ1Anyp8vfshdJj2yOdQ_uq-irzMjVB7Md84kdWMBnAjGI9qJtyrkPyVk4NnyWtow8WnmHx_x-hA2YNM6KR9RzEIUVOVTwpoc8orGh41qyu_cNC7iBKqWgW7Ax-b4weFRdQTSiCPrw=w400-h158" width="400" /></a></div><p>The rest of this very simple flow is the 'Get adaptive card (V3)' and then the 'Post card to chat or channel' actions:</p><p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiqxkuRdSuNbryxiOufy87Iu9C_pWYkjWhoCJAC4HPXvrduGsND6pCEaYt9w27-GPLtnsq4YbrIiee9eN2B2KHWtY2KNugcp0RNPEJsKqKRKXz-TfWtzbfuVg6SK27FXohqo-3sCE9vxKV8RrbUFqQa7h-EckRNRzlmnRO7-6n2ahSGFYzYCQ" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="593" data-original-width="638" height="372" src="https://blogger.googleusercontent.com/img/a/AVvXsEiqxkuRdSuNbryxiOufy87Iu9C_pWYkjWhoCJAC4HPXvrduGsND6pCEaYt9w27-GPLtnsq4YbrIiee9eN2B2KHWtY2KNugcp0RNPEJsKqKRKXz-TfWtzbfuVg6SK27FXohqo-3sCE9vxKV8RrbUFqQa7h-EckRNRzlmnRO7-6n2ahSGFYzYCQ=w400-h372" width="400" /></a></div><br />That's it - so easy! Lets test:<p></p><p>Logged into Business Central, on a sales order card. I have used 'personalise' mode to move the action button to my home tab. All the flows that would apply to this page show can be found under the Automate action.</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgKTkF2GGGLf-RCfVgZ8yMmMNA_oK31hIie26ShtOfCGYYhJ5SjKiBlwaSmgBlm8PTx1H_aS_FMX80nrrfhrVLB4fdAigCoEBuO5TJyEesHSLqLCcR_zUdb0h3BshVh-Hq_rZpfb6IDTNQKUs_DBNEEtKjlrrGrDtxMgth-PuMO6JAdRwg3yA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="368" data-original-width="1067" height="138" src="https://blogger.googleusercontent.com/img/a/AVvXsEgKTkF2GGGLf-RCfVgZ8yMmMNA_oK31hIie26ShtOfCGYYhJ5SjKiBlwaSmgBlm8PTx1H_aS_FMX80nrrfhrVLB4fdAigCoEBuO5TJyEesHSLqLCcR_zUdb0h3BshVh-Hq_rZpfb6IDTNQKUs_DBNEEtKjlrrGrDtxMgth-PuMO6JAdRwg3yA=w400-h138" width="400" /></a></div><p><br /></p>After access the new action the system will check your connections used in the flow:<p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjhgHBBuqoJqe2G9zNYba5IJ95DMP8Kjv0zeLvWh1Jikx2_KB4ntvczHsKa4cIP6Vi3uxWiV2cv8ElQ5CHL8QQ2Emu8XMFTp1nRIl0nmPb3mGBIc4alppr3y4rtERbP7lG4RvGltVBmoeCo-rrTgZK2XagZQuAV7-lNijI2vOCsQ0X5la_lxw" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="803" data-original-width="1328" height="241" src="https://blogger.googleusercontent.com/img/a/AVvXsEjhgHBBuqoJqe2G9zNYba5IJ95DMP8Kjv0zeLvWh1Jikx2_KB4ntvczHsKa4cIP6Vi3uxWiV2cv8ElQ5CHL8QQ2Emu8XMFTp1nRIl0nmPb3mGBIc4alppr3y4rtERbP7lG4RvGltVBmoeCo-rrTgZK2XagZQuAV7-lNijI2vOCsQ0X5la_lxw=w400-h241" width="400" /></a></div><br /> And then let you know if it worked or not:<br /><br /><p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgcfod-x4RAjoQeXLAGuuyAIso7VyXm7gkSJT7ZmEk9kJ2o_L5GbdZk6eN8MCszZ0ft-6P-ICHhl8I3nSsdCWicKX3wF8GYqhkT9wZDHfKefDmEx_jtc4l05jTv_R0TNWTrYcDqcrb7Wa1FpkY9aCaJOD09yQt2QEfh5BqtX6DAm-0zq5bywA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="808" data-original-width="1291" height="250" src="https://blogger.googleusercontent.com/img/a/AVvXsEgcfod-x4RAjoQeXLAGuuyAIso7VyXm7gkSJT7ZmEk9kJ2o_L5GbdZk6eN8MCszZ0ft-6P-ICHhl8I3nSsdCWicKX3wF8GYqhkT9wZDHfKefDmEx_jtc4l05jTv_R0TNWTrYcDqcrb7Wa1FpkY9aCaJOD09yQt2QEfh5BqtX6DAm-0zq5bywA=w400-h250" width="400" /></a></div><div><br /></div>Over in teams, here is our adaptive card:<div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhpSvvXT5Dw2FMMjbvqeRSIsGz8rKJzN3USEfvDMzpoa7KDqmxsZfUg7RCkEFJ4Gc8s0TxxYjF4_0QR2DogNPfYFw4zYbsJyXFi_pQtUzaULpNPYnvsumGX-ifmj0jsYKtG8yn4HsyJt4_wHZK4sqfixUUceY3w2hJl-6F0108SXTYu8pOpOA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="388" data-original-width="833" height="186" src="https://blogger.googleusercontent.com/img/a/AVvXsEhpSvvXT5Dw2FMMjbvqeRSIsGz8rKJzN3USEfvDMzpoa7KDqmxsZfUg7RCkEFJ4Gc8s0TxxYjF4_0QR2DogNPfYFw4zYbsJyXFi_pQtUzaULpNPYnvsumGX-ifmj0jsYKtG8yn4HsyJt4_wHZK4sqfixUUceY3w2hJl-6F0108SXTYu8pOpOA=w400-h186" width="400" /></a></div><br />The card was generated automatically and with the details button - the record opens inside teams. Full BC users can update the record, other staff with an M365 license can view the record.</div><div><br /><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiufmX7mvzbCmYA9ve7qDFD6FRV3CFbqNgloIRBkHtlQ80nLbmxQDSxTI8RlyOyO7WJQwBLppUcufyAJ5K5__Q30RrCzIK_OwMKYZmpoAMEkO5XSRfyYW9vwYqMLneS5yLAYSODD2EVqqWt2GKfTrQ7AFzlRWtjtKC_SL3xCRjFbVU0PB57cA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="958" data-original-width="1254" height="306" src="https://blogger.googleusercontent.com/img/a/AVvXsEiufmX7mvzbCmYA9ve7qDFD6FRV3CFbqNgloIRBkHtlQ80nLbmxQDSxTI8RlyOyO7WJQwBLppUcufyAJ5K5__Q30RrCzIK_OwMKYZmpoAMEkO5XSRfyYW9vwYqMLneS5yLAYSODD2EVqqWt2GKfTrQ7AFzlRWtjtKC_SL3xCRjFbVU0PB57cA=w400-h306" width="400" /></a></div><br />Of course to simply do what I've done here you can also use the built in share to teams button, that will ask you where to share and post the message. </div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhJDqQJfnMlfXLzcTMTrQuqnclSW9yQuvB2X260-Vx0Qs3abgLFIJlgLC9Hifzt_M_B6m4_6hGJ_H7w7JBP-1TxOXn03XrxS1XJqhMtPSAf3gpAurZPvVwNBJ8tHbJGh7VE_T87rA7tJ-YqrKzbtXZNwAQPlXk8T_NwNGO6BWlDWEcfkNWFow" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="704" data-original-width="1716" height="164" src="https://blogger.googleusercontent.com/img/a/AVvXsEhJDqQJfnMlfXLzcTMTrQuqnclSW9yQuvB2X260-Vx0Qs3abgLFIJlgLC9Hifzt_M_B6m4_6hGJ_H7w7JBP-1TxOXn03XrxS1XJqhMtPSAf3gpAurZPvVwNBJ8tHbJGh7VE_T87rA7tJ-YqrKzbtXZNwAQPlXk8T_NwNGO6BWlDWEcfkNWFow=w400-h164" width="400" /></a></div><div><br /></div>With a power automate flow however you can setup any number of other steps to embed a process in the system. You can request input from the user upon running the flow; maybe a series of questions or extra info that you then post as additional text in the teams conversation. <br /><br /></div><div>An ever greater opportunity for flows and business central is around the Automated cloud flow in combination with the "When a record is modified" trigger.</div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiOFUT03lVUglUjfuJJ8KTL5SgX2YZ3IesbIB_-J3EwfXa_Re__KFFZaGgvxWGRODEQD30i8mm9aupZxKxlFjVNu0Ddqvqveuc9Sn_YmolOd7IUL8J7amvW7LyU1ecUfqkP5axLbERrx3c_m9MOdn3tL6EvYTScnXF2n7TcnyFqatNzM0JnMQ" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="209" data-original-width="266" height="315" src="https://blogger.googleusercontent.com/img/a/AVvXsEiOFUT03lVUglUjfuJJ8KTL5SgX2YZ3IesbIB_-J3EwfXa_Re__KFFZaGgvxWGRODEQD30i8mm9aupZxKxlFjVNu0Ddqvqveuc9Sn_YmolOd7IUL8J7amvW7LyU1ecUfqkP5axLbERrx3c_m9MOdn3tL6EvYTScnXF2n7TcnyFqatNzM0JnMQ=w400-h315" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhexejXe-VhpZcyJaM58aA-7kWPSa0BhvaPUg3lP8qcf1LcaW7rUhx2J1TP3ztxJa1dK5ydsDih6UJvB_IbJHMSHWM4TxfWngFTqvIhyzX7WUNJwaQk825XOe-bBi4pJ3PHFxqgdFYhY3VO7b55FZCZpEHE3ozlz28JouEp6sfTyoGQSLVY-Q" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="74" data-original-width="423" height="70" src="https://blogger.googleusercontent.com/img/a/AVvXsEhexejXe-VhpZcyJaM58aA-7kWPSa0BhvaPUg3lP8qcf1LcaW7rUhx2J1TP3ztxJa1dK5ydsDih6UJvB_IbJHMSHWM4TxfWngFTqvIhyzX7WUNJwaQk825XOe-bBi4pJ3PHFxqgdFYhY3VO7b55FZCZpEHE3ozlz28JouEp6sfTyoGQSLVY-Q=w400-h70" width="400" /></a></div><br /><br />In this next example I want to post a card to teams when a sales order is "fully shipped". For this you need the 'When a record is modified'. This action gets the Row ID for any records that have been changed. You can then pass this row id into the "Get record (V3)" to get all the rest of the details. </div><div><br /></div><div>From the full record I'm looking at the "Fully Shipped" field and using that to drive the posting of the card to teams. </div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiQc3u60NhotHeuNosvtBJsgN7UCZfvbWZs7caIbuy5ZBafQPy6iqGpaZQr_0wyBgX_Fju6uZEqmT9HRmp4_J8ranbDcbGz7yxKOx7Z5QZF3YRSQ-y0s6QOrBB7zl5mIaBfRJETNsOEg4eJkKGpHzJS9KCSGf2TQPMpIIvYDfGVNTga_I87RQ" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="750" data-original-width="628" height="400" src="https://blogger.googleusercontent.com/img/a/AVvXsEiQc3u60NhotHeuNosvtBJsgN7UCZfvbWZs7caIbuy5ZBafQPy6iqGpaZQr_0wyBgX_Fju6uZEqmT9HRmp4_J8ranbDcbGz7yxKOx7Z5QZF3YRSQ-y0s6QOrBB7zl5mIaBfRJETNsOEg4eJkKGpHzJS9KCSGf2TQPMpIIvYDfGVNTga_I87RQ=w335-h400" width="335" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhWBCztVFQTzCHVIoco3rJ2I0d1ZqYc-jx_1N9NxYJqH-r94sU1QZ-roDYVJVaXtqSVFHzzmA1Ox150vO5fCX5lCzIIXMoCQJbLzMXMaTagbXOaTBg4JawrR_Ff9pvUHxGfPCMuov6lFfW8xJG_DU632AwkT7JGyP-5bHkLummC9Bn41Ntokg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="421" data-original-width="1263" height="134" src="https://blogger.googleusercontent.com/img/a/AVvXsEhWBCztVFQTzCHVIoco3rJ2I0d1ZqYc-jx_1N9NxYJqH-r94sU1QZ-roDYVJVaXtqSVFHzzmA1Ox150vO5fCX5lCzIIXMoCQJbLzMXMaTagbXOaTBg4JawrR_Ff9pvUHxGfPCMuov6lFfW8xJG_DU632AwkT7JGyP-5bHkLummC9Bn41Ntokg=w400-h134" width="400" /></a></div><div><br /></div><ul style="text-align: left;"><li>For the conditions, the values passed by the API are not always what you might expect. For example in BC something that's fully shipped shows "Yes", whereas in the API data this shows as "true". If your conditions are not behaving as you want - check the full output of the "Get record" from a test run to see what you need to filter on:</li></ul><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhep-687uwTwVrkJhB5br-2K9P6rv3zkKWflX44XfjbL5vs5AGusNaglav1mIfCiywfnJ1yUcMp3CfnqtEYWAnQaQSTsbLft_kyOHzg8S6oShPXbHTkT5eC1Hs90qMpt8CEVGptHwlraGgVM7W_HBZB-7c8jiJ78ZlE2RuRlbYbJBXPVbFXaw" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="750" data-original-width="654" height="400" src="https://blogger.googleusercontent.com/img/a/AVvXsEhep-687uwTwVrkJhB5br-2K9P6rv3zkKWflX44XfjbL5vs5AGusNaglav1mIfCiywfnJ1yUcMp3CfnqtEYWAnQaQSTsbLft_kyOHzg8S6oShPXbHTkT5eC1Hs90qMpt8CEVGptHwlraGgVM7W_HBZB-7c8jiJ78ZlE2RuRlbYbJBXPVbFXaw=w348-h400" width="348" /></a></div><br /><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjx6-XaaOdrAd85XlZxE7bkFx0MLx2FY3KEcBj_TPiN7iRfrxEF0A3iukP2Nao6rZEnNX__9aEi4hgQeEHIXw6YO-3ax8znSVqr61HSOALR-H0j__7Auu2Dbx8GLkEhrV6CxI2wmkTufwjT_LObFhvpWE9nfhzNbeuDRNdjLrZl51huC4tArA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="965" data-original-width="630" height="400" src="https://blogger.googleusercontent.com/img/a/AVvXsEjx6-XaaOdrAd85XlZxE7bkFx0MLx2FY3KEcBj_TPiN7iRfrxEF0A3iukP2Nao6rZEnNX__9aEi4hgQeEHIXw6YO-3ax8znSVqr61HSOALR-H0j__7Auu2Dbx8GLkEhrV6CxI2wmkTufwjT_LObFhvpWE9nfhzNbeuDRNdjLrZl51huC4tArA=w262-h400" width="262" /></a></div><div><br /></div>Lets extend this even further and automate the posting of the sales order as soon as it becomes fully shipped - yes you can do that too!</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgjeY25nag1-7iAxP9dGoYBEcKX8eJAfH4s8fwq6Su1aDWhRe-1uuSd-FJAqhDKm-cpQ496ang9Y0gf6U3ciH8sC8QowKqsbwf5N2o4hKTT5lvINy5RMuQjFirTH3FswtDtPK9NA76aaiI9UII_Ei38ImHVbcNOgvCWdnL9ZY-n9csoEtfing" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="948" data-original-width="1010" height="375" src="https://blogger.googleusercontent.com/img/a/AVvXsEgjeY25nag1-7iAxP9dGoYBEcKX8eJAfH4s8fwq6Su1aDWhRe-1uuSd-FJAqhDKm-cpQ496ang9Y0gf6U3ciH8sC8QowKqsbwf5N2o4hKTT5lvINy5RMuQjFirTH3FswtDtPK9NA76aaiI9UII_Ei38ImHVbcNOgvCWdnL9ZY-n9csoEtfing=w400-h375" width="400" /></a></div><div><br /></div><div>The action is carried out in the name of the flow owner:</div><div><br /></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg9o_jbG7LEKHnZ1kXDnN-RnnKWdACEIojWs2PC5X9oAfnJPR65_rYpWK61zEhGmwz4kBEmiwBe1BBOvOrdDsn_PNVKgfMtUNrDDMl8HnjFI-bcaX8mDQug3DgwpPkobROGZXgQ3-vVeiVGgzrmds0GmqC-G9Vbzd99crekm12mQypAZAsaDQ" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="400" data-original-width="954" height="168" src="https://blogger.googleusercontent.com/img/a/AVvXsEg9o_jbG7LEKHnZ1kXDnN-RnnKWdACEIojWs2PC5X9oAfnJPR65_rYpWK61zEhGmwz4kBEmiwBe1BBOvOrdDsn_PNVKgfMtUNrDDMl8HnjFI-bcaX8mDQug3DgwpPkobROGZXgQ3-vVeiVGgzrmds0GmqC-G9Vbzd99crekm12mQypAZAsaDQ=w400-h168" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Posted G/L Registers</td></tr></tbody></table></div><div><br /></div><div>There are many actions possible! <a href="https://learn.microsoft.com/en-us/connectors/dynamicssmbsaas/#run-action-(v2)">Dynamics 365 Business Central - Connectors | Microsoft Learn</a></div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjLxYMFWUqhfvw8RiSMxL3H6w-9mxIwUpfwNGg2Xltj83cj3hwdo3Umb8TOiJwkZCxmwL04u571mq4ekGVlDsCNa5GgcEUntuX0vg_n_yh7FV0tEJt5SMpUBezKqRD0sd0BXyD4PzXZuIgpgzRHTk7_jTxaUVBQszDgsIbQQoHN2TDx5gFTvA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="673" data-original-width="571" height="400" src="https://blogger.googleusercontent.com/img/a/AVvXsEjLxYMFWUqhfvw8RiSMxL3H6w-9mxIwUpfwNGg2Xltj83cj3hwdo3Umb8TOiJwkZCxmwL04u571mq4ekGVlDsCNa5GgcEUntuX0vg_n_yh7FV0tEJt5SMpUBezKqRD0sd0BXyD4PzXZuIgpgzRHTk7_jTxaUVBQszDgsIbQQoHN2TDx5gFTvA=w340-h400" width="340" /></a></div><div><br /></div></div></div></div></div><div><div class="separator" style="clear: both; text-align: left;">END</div></div></div>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-78654556581337485082023-03-05T19:54:00.004+00:002023-03-29T07:32:44.475+00:00To Validate or Not to Validate: Line validation in Dynamics 365 Business Central Documents<p>This is a short note on how to add further validation to the sales or purchase document lines in Dynamics 365 Business Central with a small AL code extension. </p><p>There are a number of validations operating in the background for sales and purchase lines. Sometimes you need to add to this, in this example I'll build a small app to meet the following requirement.</p><p></p><ul style="text-align: left;"><li>Prevent sales lines with zero value</li></ul><div>This is a great starting point for building apps <a href="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-get-started">https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-get-started</a> </div><div><br /></div><div>To meet this requirement I'll use the OnAfterInsert trigger which will carry out the checks after the system already validated at the database level.</div><div><br /></div><div><a href="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/triggers-auto/tableextension/devenv-onafterinsert-tableextension-trigger">https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/triggers-auto/tableextension/devenv-onafterinsert-tableextension-trigger</a> </div><div><br /></div><div>Here is the example code:</div><script src="https://emgithub.com/embed-v2.js?target=https%3A%2F%2Fgithub.com%2Fandywingate%2Fd365bc-validatesalesline%2Fblob%2Fmain%2FSalesLine.TableExt.al&style=default&type=code&showBorder=on&showLineNumbers=on&showFileMeta=on&showFullPath=on&showCopy=on"></script><div><br /></div>Lets see what ChatGPT has to say about this<div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjEcVk7yhYIa6l_gHJOl-cOR_yz-P29bnyvFwgUU1_vb9S1gFHZYC_uSbNO7Rt_dQOhpJK2iNmIk26VPJXZLQ5D9oA7Cy1wkWZKIzOGNW8XNjnAHUj-Cjn0NmvRF0s3_RNB2SBC5bwPZ4Vb0lMCs481h4W5SLzCqseh_t1KNyyI8GenEPYq3g" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="448" data-original-width="835" height="172" src="https://blogger.googleusercontent.com/img/a/AVvXsEjEcVk7yhYIa6l_gHJOl-cOR_yz-P29bnyvFwgUU1_vb9S1gFHZYC_uSbNO7Rt_dQOhpJK2iNmIk26VPJXZLQ5D9oA7Cy1wkWZKIzOGNW8XNjnAHUj-Cjn0NmvRF0s3_RNB2SBC5bwPZ4Vb0lMCs481h4W5SLzCqseh_t1KNyyI8GenEPYq3g" width="320" /></a></div>Pretty handy!</div><div><br /></div><div>What if we want more? I asked to validate in a different way: "Please rewrite the code to also prevent the job and job task from being blank" </div><div><br /></div>
<script src="https://gist.github.com/andywingate/dbd1b85d1b65c34cd4b5e47454291c52.js"></script>
<div>Looks good, I liked the way it also updated the error message, very handy. Would need testing of course.</div><div><br /></div><div>The original simple .app and code can be found here <a href="https://github.com/andywingate/d365bc-validatesalesline">https://github.com/andywingate/d365bc-validatesalesline</a></div>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-29390783617277091302023-02-25T12:26:00.006+00:002023-03-29T07:33:20.253+00:00Yellow Excel or: How I Learned to stop worrying and Love PowerBI for Dynamics 365 BC with help from ChatGPT<p>This is a short note of how to add PowerBI reports to the Role Center page on Business Central</p><p>On most of the BC role centers you have this page part:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEixhYZkiRAzIzBfqdAUv_saEH9BxvoiEN2dAEUWA5CnetuDeQ5PrP6LBukhOfhEJHs0OLitzVmLE183m_1QRK6opJbPmco8h49zBUVBLcY1I4CaPT7Vt9ChsyoZjLn6Ysqmx_t-4xmIOnwTnUfKmNWAR4evf9P3LbjYXR3KpoPfqEbDpFq8qA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="557" data-original-width="580" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEixhYZkiRAzIzBfqdAUv_saEH9BxvoiEN2dAEUWA5CnetuDeQ5PrP6LBukhOfhEJHs0OLitzVmLE183m_1QRK6opJbPmco8h49zBUVBLcY1I4CaPT7Vt9ChsyoZjLn6Ysqmx_t-4xmIOnwTnUfKmNWAR4evf9P3LbjYXR3KpoPfqEbDpFq8qA" width="250" /></a></div><br />So lets get started; clicking "Get started" takes you to a short wizard that checks your PowerBI license and then presents you with the updated view:<p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgEeJWAucLJi-61nVX-fOXkD0cyAS7GbhedKh5BLCgpn2QRJpDgwpNeNNwb3z0YNRIEQNPenvLwHicXkD7EY76Q6_-JnVYslVH7hPf9mnhkY-hsgg1mV5vtGUVCXCJSvvUeLQAlitsWtIHp10ghzTPwYLkCo_NocWinO1qqdo0FQQlRPIuh5Q" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="236" data-original-width="341" height="221" src="https://blogger.googleusercontent.com/img/a/AVvXsEgEeJWAucLJi-61nVX-fOXkD0cyAS7GbhedKh5BLCgpn2QRJpDgwpNeNNwb3z0YNRIEQNPenvLwHicXkD7EY76Q6_-JnVYslVH7hPf9mnhkY-hsgg1mV5vtGUVCXCJSvvUeLQAlitsWtIHp10ghzTPwYLkCo_NocWinO1qqdo0FQQlRPIuh5Q" width="320" /></a></div><p><br /></p>Here you can select to see any reports already published to "Enable" them to show on your Role Center page<p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEizb-z9kr2y0cY1Iu9-cmL_SFSckvZSFs51YxFO7kGww8rAUPLSEqG3FS6fOhRjax8sQNOq8lHw0pJoxgeZ8W5ALysri7QBXvT8MVscdUqU5iM7GTO-ZPQnDOIIovy-0x7WKYL1uzG5BvPQR4kF1OkDkcqVvsQL14Y86P3PoKZOBVCzKeXl0g" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="541" data-original-width="834" height="208" src="https://blogger.googleusercontent.com/img/a/AVvXsEizb-z9kr2y0cY1Iu9-cmL_SFSckvZSFs51YxFO7kGww8rAUPLSEqG3FS6fOhRjax8sQNOq8lHw0pJoxgeZ8W5ALysri7QBXvT8MVscdUqU5iM7GTO-ZPQnDOIIovy-0x7WKYL1uzG5BvPQR4kF1OkDkcqVvsQL14Y86P3PoKZOBVCzKeXl0g" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Maybe you want something else; lets do a small chart to see who has open approvals</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Open PowerBI desktop and get data </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEio42HT9K40YLAzB85w0eO3YZsIQY1iM6DsV0rss6mZa7d32M1drIIxE6oYNgGpUlLQsY8Bcxr-IB3DO1Jc8oENgaDuLfwXRJPQghT40umoAC0hWYemSl0B-JspaHKio-96ZwSxrvR0ng7i_3I7hZy7T5eBmMBAGyFcMoI-I9itMzwitY61Qw" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="645" data-original-width="601" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEio42HT9K40YLAzB85w0eO3YZsIQY1iM6DsV0rss6mZa7d32M1drIIxE6oYNgGpUlLQsY8Bcxr-IB3DO1Jc8oENgaDuLfwXRJPQghT40umoAC0hWYemSl0B-JspaHKio-96ZwSxrvR0ng7i_3I7hZy7T5eBmMBAGyFcMoI-I9itMzwitY61Qw" width="224" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">There are a number of API data sources for BC, but none that happen to work for this example</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgQW-5zALOpAs_2YjlCRHfIkmxJs8bS8aEQ_JWBD1UNHtMwU8XkWdfN1Zd_tw8fPq0aNMMKneZhO41jxzEYfYpFhOiCteL3Lq_rm-WE3_XG9vwmUXEuMfVc4KC-KjvRnZ3A8bUNTBhEZTj-ThxObzH52fVK8Mpj4LinA12L85mssLn2XciPiw" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="296" data-original-width="536" height="177" src="https://blogger.googleusercontent.com/img/a/AVvXsEgQW-5zALOpAs_2YjlCRHfIkmxJs8bS8aEQ_JWBD1UNHtMwU8XkWdfN1Zd_tw8fPq0aNMMKneZhO41jxzEYfYpFhOiCteL3Lq_rm-WE3_XG9vwmUXEuMfVc4KC-KjvRnZ3A8bUNTBhEZTj-ThxObzH52fVK8Mpj4LinA12L85mssLn2XciPiw" width="320" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div>Time for a new API! Thankfully this is SUPER easy for simple pages.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg1k4h-GsC142sQg1Ie_HO4z9YXWT6JO10nI2J5BV1tFBgn8uVzcC7O3QDiS9k1TPeO1-1AVSg1hZNTQzrRfKu-KoFNpfJXM0my_RAL_L1lHoYuhWqN-6_3kTvOb7UeLOUb7JgZUx2bAObcRlpZpV5T83zMGoO8Ck0hOtop3NmM3OxDUlxtCA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="233" data-original-width="1142" height="65" src="https://blogger.googleusercontent.com/img/a/AVvXsEg1k4h-GsC142sQg1Ie_HO4z9YXWT6JO10nI2J5BV1tFBgn8uVzcC7O3QDiS9k1TPeO1-1AVSg1hZNTQzrRfKu-KoFNpfJXM0my_RAL_L1lHoYuhWqN-6_3kTvOb7UeLOUb7JgZUx2bAObcRlpZpV5T83zMGoO8Ck0hOtop3NmM3OxDUlxtCA" width="320" /></a></div><br />Head to the Web Services page and use the "Create Data Set" button</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Here are my choices to get a feed of approval entries </div><div class="separator" style="clear: both; text-align: left;"><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj6EnXThv-Gp0z1QXR6BYmpIyJxlgXzikYUdmgvR46jG3aZuoXaJ_UnAkjTf8Aa0YvxjJ_sKJSmHQW3OHamD8BiP3LDtfr6RyMC9ein4CIWJ2hueCj9Qump9lfKRHGkP0LHAb8Trky4LEr19kov3YKboAWAghQny-L9FSg05QQFiB-bgK4kaA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="612" data-original-width="605" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEj6EnXThv-Gp0z1QXR6BYmpIyJxlgXzikYUdmgvR46jG3aZuoXaJ_UnAkjTf8Aa0YvxjJ_sKJSmHQW3OHamD8BiP3LDtfr6RyMC9ein4CIWJ2hueCj9Qump9lfKRHGkP0LHAb8Trky4LEr19kov3YKboAWAghQny-L9FSg05QQFiB-bgK4kaA" width="237" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgD2d89ip6OxCDXA33nreR9wo_mL_W4vwP3wUhNIhAEY6sWHRY5IaETaAHVU3s3ot5vG-dnrURPhv-uQRAonDLuK_h947AxNU05S3hn9r8ZhT8wfckTo_eXahaGhpOWncwPA2f5Y53uJLABeUNctUHQruqWFN0uiTrsR0tAMR5J9A2FFs9csQ" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="597" data-original-width="604" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEgD2d89ip6OxCDXA33nreR9wo_mL_W4vwP3wUhNIhAEY6sWHRY5IaETaAHVU3s3ot5vG-dnrURPhv-uQRAonDLuK_h947AxNU05S3hn9r8ZhT8wfckTo_eXahaGhpOWncwPA2f5Y53uJLABeUNctUHQruqWFN0uiTrsR0tAMR5J9A2FFs9csQ" width="243" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEixxDRYwZK8Fm04seD6M1erWWh4f_ow8Q3vlwL1MNXdVvo143j313vggh1992Q4Zjhmk-CS0-4EseNgwuVoBJ1hnkHzupRpuLxQvset31CTGQC9tgxLYYn7SzwRCPRVXmASxiYzefb_A2mpJI-q1v-ep-HxfPIiy0uK0Owjqa6vxap4t7QlwQ" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="607" data-original-width="603" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEixxDRYwZK8Fm04seD6M1erWWh4f_ow8Q3vlwL1MNXdVvo143j313vggh1992Q4Zjhmk-CS0-4EseNgwuVoBJ1hnkHzupRpuLxQvset31CTGQC9tgxLYYn7SzwRCPRVXmASxiYzefb_A2mpJI-q1v-ep-HxfPIiy0uK0Owjqa6vxap4t7QlwQ" width="238" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Done - the new AP shows up in the list in BC and in PowerBI after a quick refresh</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiPEjG_JhshnQzkqqlPaVRFfQdrsoaaaoD6yg0L3qo6yG_E39O_qnF0mmg6yK1Sb5agU_K5qXHaC_zDhXhux_YHjl02JdH9jMNxJO9gr6GlOwdw1gJfHmTA3FD-K_yv2FUyHcxG7qbHDeKtwlsJri24bK2BwM0GGpxZfc8tiU2mK39jqCxRZA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="339" data-original-width="1119" height="97" src="https://blogger.googleusercontent.com/img/a/AVvXsEiPEjG_JhshnQzkqqlPaVRFfQdrsoaaaoD6yg0L3qo6yG_E39O_qnF0mmg6yK1Sb5agU_K5qXHaC_zDhXhux_YHjl02JdH9jMNxJO9gr6GlOwdw1gJfHmTA3FD-K_yv2FUyHcxG7qbHDeKtwlsJri24bK2BwM0GGpxZfc8tiU2mK39jqCxRZA" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgAm602zfVz9bowPZvg81uQSzTQJanxuApivV7dncAl6e57LjH_OiebP0WP2ZPpGhKltuIyIvMQ7_7eta6lFYZTBbrb_yBEyEiTCnogVCnzbJ_67H5bNEoFVNG7pSQwyIcW6yApp_4pmonnZtXl1-8D56UMP78ibg0cM9Aj5mbNguX_N0dHcw" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="353" data-original-width="513" height="220" src="https://blogger.googleusercontent.com/img/a/AVvXsEgAm602zfVz9bowPZvg81uQSzTQJanxuApivV7dncAl6e57LjH_OiebP0WP2ZPpGhKltuIyIvMQ7_7eta6lFYZTBbrb_yBEyEiTCnogVCnzbJ_67H5bNEoFVNG7pSQwyIcW6yApp_4pmonnZtXl1-8D56UMP78ibg0cM9Aj5mbNguX_N0dHcw" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Precious data! </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh2B9Mw44YyV3IDfU8jhU5ydwjyFMVs6MxDLuwGg5JTbwvQSgxQdqE66pHHApVOlnX730ggei2Qm6iTY4xX1Pu4zImqXrmt7_1k2hkAR2qRqlpI_fz1UFF5AfDxfTOG1bud4FwImqfxKmSWmZY-Y2plLUlOiE39u1XqJ2M7IZzcF6HhzlKItA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="523" data-original-width="1357" height="123" src="https://blogger.googleusercontent.com/img/a/AVvXsEh2B9Mw44YyV3IDfU8jhU5ydwjyFMVs6MxDLuwGg5JTbwvQSgxQdqE66pHHApVOlnX730ggei2Qm6iTY4xX1Pu4zImqXrmt7_1k2hkAR2qRqlpI_fz1UFF5AfDxfTOG1bud4FwImqfxKmSWmZY-Y2plLUlOiE39u1XqJ2M7IZzcF6HhzlKItA" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Just to spice things up, here is an extra requirement </div><div class="separator" style="clear: both; text-align: left;"><ul style="text-align: left;"><li>The records to be approved are Purchase Invoices, Purchase Orders and Vendor</li><li>Vendors are not Documents in BC, so the Document Type column is blank for those approvals </li><ul><li>This will not do! Conditional column time : </li></ul></ul><div>Its been way too long since I used PowerBI and I forgot how to do that kind of thing. Lets see if ChatGPT can help.</div><div><br /></div><div>So the code for queries you can get to by clicking on "Transform Data" on the PowerBI desktop home ribbon. Then click this button:</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEizlPw0TXwlAqAlVkkld_Ne9VRnzgB71BG7WWL9K64YQDVFv2OYXkSEuR07BHtkS0GguulNvNlDZmrau-zpvmzHKNKVCHcj0m_Mb8_YfHP7lQVKK3JjgdlnCdriA3u4Scl97xStD2wORtubItUN-Im_P2b1npaoTNUMnqxxvRS5LqOaBbySUg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="294" data-original-width="955" height="99" src="https://blogger.googleusercontent.com/img/a/AVvXsEizlPw0TXwlAqAlVkkld_Ne9VRnzgB71BG7WWL9K64YQDVFv2OYXkSEuR07BHtkS0GguulNvNlDZmrau-zpvmzHKNKVCHcj0m_Mb8_YfHP7lQVKK3JjgdlnCdriA3u4Scl97xStD2wORtubItUN-Im_P2b1npaoTNUMnqxxvRS5LqOaBbySUg" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div>Our beautiful code for the query, lets feed this to ChatGPT</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgDQcOJYo6oPLSp8oerGr6al4jiybJKAXRTDb0pQXOERfk4kLl1tQdtU0Iapvb9O_PM2di2uwT_LeX9PjfcnpHBoaHJA68h7isWXpZK3-N2dGQ__OKVXPwd9--Ojmsv1aEy47yHDQtyTVHiq5HFlRlncgQ8G05V-V_qDnYAwqAxGqf_XmDraA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="429" data-original-width="1004" height="137" src="https://blogger.googleusercontent.com/img/a/AVvXsEgDQcOJYo6oPLSp8oerGr6al4jiybJKAXRTDb0pQXOERfk4kLl1tQdtU0Iapvb9O_PM2di2uwT_LeX9PjfcnpHBoaHJA68h7isWXpZK3-N2dGQ__OKVXPwd9--Ojmsv1aEy47yHDQtyTVHiq5HFlRlncgQ8G05V-V_qDnYAwqAxGqf_XmDraA" width="320" /></a></div><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi1cdqim7CRq5U_Jrz-25aOPQm-RHINI3XT8bRhOk2RhIjda4Koe_9di0mnIRWCYEJv_DN3-yHYnd1YJh0NYePd_BmkfDHP3CzG8apjsG97JwyeNeyTFRpMh67XVd_W-AyP4Gmu3lHpRxkeDZ0gUsMujDb38OGuxjbahwgkwM-Z7q9Sxyk3hw" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="268" data-original-width="786" height="109" src="https://blogger.googleusercontent.com/img/a/AVvXsEi1cdqim7CRq5U_Jrz-25aOPQm-RHINI3XT8bRhOk2RhIjda4Koe_9di0mnIRWCYEJv_DN3-yHYnd1YJh0NYePd_BmkfDHP3CzG8apjsG97JwyeNeyTFRpMh67XVd_W-AyP4Gmu3lHpRxkeDZ0gUsMujDb38OGuxjbahwgkwM-Z7q9Sxyk3hw" width="320" /></a></div><div><br /></div>And the reply </div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhHKANCPuJY56QIsoMm0-7capPa6JrSqMmbOidrES-7MLADNUoirmo0h84qRyVaHXccYVvm-uAj8VwigfyaPRaHlHzn_XAcEeIAMjp6ExYwtVhxjdboZVFvtTpdZTMYZ12D_yYGKKPOWOaBCq64fgxZ3AGMHGGSwEQI9QHHkRWMwxdMGVYHLg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="595" data-original-width="814" height="234" src="https://blogger.googleusercontent.com/img/a/AVvXsEhHKANCPuJY56QIsoMm0-7capPa6JrSqMmbOidrES-7MLADNUoirmo0h84qRyVaHXccYVvm-uAj8VwigfyaPRaHlHzn_XAcEeIAMjp6ExYwtVhxjdboZVFvtTpdZTMYZ12D_yYGKKPOWOaBCq64fgxZ3AGMHGGSwEQI9QHHkRWMwxdMGVYHLg" width="320" /></a></div><br /><br />Does it work? Not quite. </div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiVONObBw64ONJu1JYq94V4wKZ76S2PoHMGyNPTl2uRKqnQSxSDgtf2lPEwHzO6VVTv-Uoggb-yQRpk3pVhqk8LLi4w6WKhQ9fwTIkd9_VftFWmU1opyopwXjnXjJg31Z8H8H4IaOIPNsGXm2JmNEcqy0xYJL6jSjfDhKRnvXBiqFLeBnMbsg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="94" data-original-width="666" height="45" src="https://blogger.googleusercontent.com/img/a/AVvXsEiVONObBw64ONJu1JYq94V4wKZ76S2PoHMGyNPTl2uRKqnQSxSDgtf2lPEwHzO6VVTv-Uoggb-yQRpk3pVhqk8LLi4w6WKhQ9fwTIkd9_VftFWmU1opyopwXjnXjJg31Z8H8H4IaOIPNsGXm2JmNEcqy0xYJL6jSjfDhKRnvXBiqFLeBnMbsg" width="320" /></a></div><div><br /></div>But the beauty of ChatGPT is that it gave me a rough idea and this guided my next google searches on what to use instead of the made up "Text.IsEmpty" function.</div><div><br /></div><div>Here is the final code with the extra column code that works.</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgcKiSwLcV-kpoNHyZwqpNStdReuvCXxcUR9NEP-_tLq4GiuQAW-_3XKoia6ZocCiL7lETTvQi5XMXIqmUGG5Xs41ADpc81fwCtHDHlJ-FT0lNjg9rCOji0jIURhTXwEFLpFrVFNupVANqRtMgHXoCa97EM_oKxi26lDYynB6jcN8fkyz8d3Q" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="436" data-original-width="1007" height="139" src="https://blogger.googleusercontent.com/img/a/AVvXsEgcKiSwLcV-kpoNHyZwqpNStdReuvCXxcUR9NEP-_tLq4GiuQAW-_3XKoia6ZocCiL7lETTvQi5XMXIqmUGG5Xs41ADpc81fwCtHDHlJ-FT0lNjg9rCOji0jIURhTXwEFLpFrVFNupVANqRtMgHXoCa97EM_oKxi26lDYynB6jcN8fkyz8d3Q" width="320" /></a></div><div><br /></div><br />Now we have the data - lets make a simple chart - make the chart the size of the whole page as it will scale in BC.</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhRfTjidFP3oN_MciTiECYWDCM7KSC4GdzOlHUEUfJcr9f1vt8JvJKSrMlshKOUZc6YhhkVm4kAZwQ-_6fHiDczqTzbL-ZGOrSQ5XUH78kjAoXldfzCZjQq9LtkiscVNJEH3Az5Mfv3GHwNm673dJr1kdqwsrPJ9GdHkrs73f55uNDcF9i6kQ" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="926" data-original-width="1887" height="157" src="https://blogger.googleusercontent.com/img/a/AVvXsEhRfTjidFP3oN_MciTiECYWDCM7KSC4GdzOlHUEUfJcr9f1vt8JvJKSrMlshKOUZc6YhhkVm4kAZwQ-_6fHiDczqTzbL-ZGOrSQ5XUH78kjAoXldfzCZjQq9LtkiscVNJEH3Az5Mfv3GHwNm673dJr1kdqwsrPJ9GdHkrs73f55uNDcF9i6kQ" width="320" /></a></div><div><br /></div><div>Looks like some people have got some approving to be getting on with!</div><div><br /></div><div>Next Publish the PowerBI report to a suitable workspace</div></div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjOTnGgfTAfFEXm9RmRgWGcJn3oisdJR-WojlcsNwf6EIkh0R8yJgTcC07ikyQfRJTJYwPwugwRm781EQVVCwVcrq1IOWEP9zzpLUfKrDNq_-PDdWkdfoV3fzpNYJjceg1AAYWmq-FHZ_lWTIac9JLhngbADlVo2P75oZ30nVC1VNEDXRH3Fg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="326" data-original-width="530" height="197" src="https://blogger.googleusercontent.com/img/a/AVvXsEjOTnGgfTAfFEXm9RmRgWGcJn3oisdJR-WojlcsNwf6EIkh0R8yJgTcC07ikyQfRJTJYwPwugwRm781EQVVCwVcrq1IOWEP9zzpLUfKrDNq_-PDdWkdfoV3fzpNYJjceg1AAYWmq-FHZ_lWTIac9JLhngbADlVo2P75oZ30nVC1VNEDXRH3Fg" width="320" /></a></div><div><br /></div>Select in BC - that's it done!<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg2S8kps3IcehMp8dwH4jkhmqn2-if9NueKeihO_4Fp-Kd_-j7M5wQhg7mcwmOEaEQLNEeMyw5W7TZ3XjzjypdbIA9YXbFMVMx_zjtCDX7eNplNd50bTgAJQzOv6-4EAkx8IZvEgDa7taZhyej3QCQeUDDpGCCKCSZIiY9pns0Kqd8seZrP8A" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="273" data-original-width="501" height="174" src="https://blogger.googleusercontent.com/img/a/AVvXsEg2S8kps3IcehMp8dwH4jkhmqn2-if9NueKeihO_4Fp-Kd_-j7M5wQhg7mcwmOEaEQLNEeMyw5W7TZ3XjzjypdbIA9YXbFMVMx_zjtCDX7eNplNd50bTgAJQzOv6-4EAkx8IZvEgDa7taZhyej3QCQeUDDpGCCKCSZIiY9pns0Kqd8seZrP8A" width="320" /></a></div><br /><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEizUnzAA8G8QdzjyF3SPXamUjw8rcb-nDz1bWXzmliNHlOmhQmRqXC-7qLmwO5WKM1LcmkIudQ4O4CZI0keqXjn_YcWAS2QBnNJFTJK12vEAxSGppDo4LvzSdZBDPDTJZs_i8p2fSKkJlfda5NNXsBv8VddO8EtwqsDg2hwVqK_AFPGPc_yiw" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="638" data-original-width="912" height="224" src="https://blogger.googleusercontent.com/img/a/AVvXsEizUnzAA8G8QdzjyF3SPXamUjw8rcb-nDz1bWXzmliNHlOmhQmRqXC-7qLmwO5WKM1LcmkIudQ4O4CZI0keqXjn_YcWAS2QBnNJFTJK12vEAxSGppDo4LvzSdZBDPDTJZs_i8p2fSKkJlfda5NNXsBv8VddO8EtwqsDg2hwVqK_AFPGPc_yiw" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjSuySs3QUPQInH2Bo-kWGwkG-urA3VmpdUsWKIBppJNxX04DkzUo_WbTWO6M7YX3T0LC74Sp3nWBOmciUqLW9Aa7rG2jjinGUZkHqCtqtzvcLFuJXb4I2cvK2dZ3jWE4IcC5J2QZlfu2-M48SF3i8g2_XdNK1MvQIcnG0kMOGCn8ijZ2PTfA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="578" data-original-width="1161" height="159" src="https://blogger.googleusercontent.com/img/a/AVvXsEjSuySs3QUPQInH2Bo-kWGwkG-urA3VmpdUsWKIBppJNxX04DkzUo_WbTWO6M7YX3T0LC74Sp3nWBOmciUqLW9Aa7rG2jjinGUZkHqCtqtzvcLFuJXb4I2cvK2dZ3jWE4IcC5J2QZlfu2-M48SF3i8g2_XdNK1MvQIcnG0kMOGCn8ijZ2PTfA" width="320" /></a></div></div></div></div></div></div></div></div>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-63464778540078698992023-01-01T09:00:00.120+00:002024-03-17T22:28:16.523+00:00About me<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv3aTi9JstAM7w2jTxQ95p_Fo2ZsSGhLULiJhdZFk_pumKsmVkqIYWYYMItd5syR9SFFLPMgbXhjv3vbkvf6bbbsxMLYtwTkX8_waekoJQdr6dpYrNH2rjP2RdJkR-H6KSt4VZAD6dmfKzqX5E2WFy-D2S0mCyPu6D4FqiirGGpibXCs5xFg/s307/Andy%20Head.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="307" data-original-width="307" height="307" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv3aTi9JstAM7w2jTxQ95p_Fo2ZsSGhLULiJhdZFk_pumKsmVkqIYWYYMItd5syR9SFFLPMgbXhjv3vbkvf6bbbsxMLYtwTkX8_waekoJQdr6dpYrNH2rjP2RdJkR-H6KSt4VZAD6dmfKzqX5E2WFy-D2S0mCyPu6D4FqiirGGpibXCs5xFg/s1600/Andy%20Head.jpg" width="307" /></a></div><p>I am passionate about using technology to help understand and solve real business problems.</p><p>I love sharing knowledge, discussing ideas and finding out how others understand and solve problems.</p><p>Interacting with the <a href="https://www.d365ppug.com/" target="_blank">Microsoft Power Platform and Dynamics 365</a> communities is a lot of fun, the people are very welcoming and always have a lot of interesting thoughts to share.</p><p>The current purpose of this blog is to share interesting problems and solutions focused around the use of <a href="https://dynamics.microsoft.com/en-gb/business-central/overview" target="_blank">Dynamics 365 Business Central</a> and the wider <a href="https://powerplatform.microsoft.com/" target="_blank">Power Platform</a>.</p><p>If you want to get in touch please email <a href="mailto:andy@wingateuk.com">andy@wingateuk.com</a> or connect on LinkedIn <a href="https://www.linkedin.com/in/andywingate/">linkedin.com/in/andywingate/</a></p><p>If your business is interested in finding out how to get more from the <a href="https://dynamics.microsoft.com/en-us/" target="_blank">Microsoft Dynamics 365 Business Applications</a> platform you can reach out to <a href="https://incrementalgroup.co.uk/" target="_blank">Incremental Group</a> we are a <a href="https://appsource.microsoft.com/en-GB/marketplace/partner-dir/159cb7bf-f804-4d9b-af66-5bd443f28182" target="_blank">Microsoft Solutions Partner for Business Applications with a Specialisation in SMB Management</a>. We have a great team and have helped a lot of businesses <a href="https://incrementalgroup.co.uk/resources/case-studies/" target="_blank">large and small</a> achieve amazing results.</p><h2 style="text-align: left;">Certifications</h2><p style="text-align: left;"></p><ul style="text-align: left;"><li>Microsoft Certified: Dynamics 365 Business Central Functional Consultant Associate <a href="https://learn.microsoft.com/en-gb/users/andywingate/credentials/40c353064f1f073d">Credentials - andywingate | Microsoft Learn</a></li><li>Microsoft Certified: Power Platform Fundamentals <a href="https://learn.microsoft.com/en-gb/users/andywingate/credentials/6b423ab3173c76bf">Credentials - andywingate | Microsoft Learn</a></li><li>Microsoft Certified: Azure Fundamentals <a href="https://learn.microsoft.com/en-gb/users/andywingate/credentials/e48e6012e123a8a">Credentials - andywingate | Microsoft Learn</a></li></ul><p></p>
<div data-iframe-height="270" data-iframe-width="150" data-share-badge-host="https://www.credly.com" data-share-badge-id="59d17790-9ad9-45f7-adfd-35836207f8bb"></div><script async="" src="//cdn.credly.com/assets/utilities/embed.js" type="text/javascript"></script>
<div data-iframe-height="270" data-iframe-width="150" data-share-badge-host="https://www.credly.com" data-share-badge-id="5eea5a2d-e3a7-4027-8fa8-dac9abe18e62"></div><script async="" src="//cdn.credly.com/assets/utilities/embed.js" type="text/javascript"></script>
<div data-iframe-height="270" data-iframe-width="150" data-share-badge-host="https://www.credly.com" data-share-badge-id="c0fb80fa-7ab6-4119-8b84-6f279eb91dfd"></div><script async="" src="//cdn.credly.com/assets/utilities/embed.js" type="text/javascript"></script>
<br />
<div data-iframe-height="270" data-iframe-width="150" data-share-badge-host="https://www.credly.com" data-share-badge-id="bc99a2d6-8033-448a-b416-1bcad5e493eb"></div><script async="" src="//cdn.credly.com/assets/utilities/embed.js" type="text/javascript"></script>
<div data-iframe-height="270" data-iframe-width="150" data-share-badge-host="https://www.credly.com" data-share-badge-id="10b4ae58-fff7-4f74-a964-9e46402284f6"></div><script async="" src="//cdn.credly.com/assets/utilities/embed.js" type="text/javascript"></script>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-963604546849993272022-09-11T22:23:00.003+00:002023-03-29T07:33:39.548+00:00Coriolis RPG skill check probabilities<p>In Coriolis the skill rolls use a pool of d6, and you count how many 6's you rolled, a 6 is considered a success. You can optionally reroll any dice that were not 6's the first time you rolled. Sometimes you can add bonus d6 dice to the reroll pool. If you roll more successes that's good, if you roll 1 success that's a 'limited' success, if you roll 3 or more it's a 'critical' success.</p><p>I wanted to model this probability as the book only shows the chance of rolling a success and one reroll, but doesn't mention if that reroll had any extra bonus dice.</p><p>With some <a href="https://rpg.stackexchange.com/questions/201364/anydice-counting-successes-on-dice-and-rerolling-any-bonus-dice-below-the-t" target="_blank">help</a> from a kind internet stranger here is the <a href="https://anydice.com/program/2afea">anydice </a>statement to get the probabilities of rolling 1, 2..10 dice with a bonus of B extra dice on the reroll.</p><p><span style="font-family: courier;">B:0<br />loop N over {1,2,3,4,5,6,7,8,9,10}{<br />output [count 6 in Nd{1d6:5, 6:6}]+[count 6 in Bd6]<br />}</span></p><p>Here is a table of results, for 0, 1, 2 or 3 bonus dice and showing for a limited success and critical success:</p><p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH3EQ437fBUJX6CrMO4HcWcr-ldw6Gl9dn1V7WuEHnl1W11zsa3zgD9Zipxx-O1FAlJYCcb9s0tqKzXS9QSfjWVbwDcLixM7KRtrG8bPUj0_4JIruFPL--3lqh4CczwpTOIV99zkMl2tQfFRIFiiNWKSWr-NysOm63-Wnr5fSDkAQ1CFA1eA/s964/2022-09-11%2023_04_42-Book1.xlsx%20-%20Excel.png" style="clear: left; display: inline; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="263" data-original-width="964" height="158" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH3EQ437fBUJX6CrMO4HcWcr-ldw6Gl9dn1V7WuEHnl1W11zsa3zgD9Zipxx-O1FAlJYCcb9s0tqKzXS9QSfjWVbwDcLixM7KRtrG8bPUj0_4JIruFPL--3lqh4CczwpTOIV99zkMl2tQfFRIFiiNWKSWr-NysOm63-Wnr5fSDkAQ1CFA1eA/w580-h158/2022-09-11%2023_04_42-Book1.xlsx%20-%20Excel.png" width="580" /></a></p><h3 style="text-align: left;"><span style="font-family: arial;">Limited successes chart</span></h3><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCz9gfFLH0x5Dskc7DhIJbefdavlsfxjWRfi6D6yA9v0e55T1VQJV323QdGplrjFXGAFZRhncV25LaIZ4_rCotm7ymbRp3hLKGCVtSh2sP2xTGhxfZNQtHdDBVYICj-wwW242OwUXVGizGigwSHrfRUg15iKSU56YhyIGeiOoV4EOQc-RYDA/s1348/2022-09-11%2023_10_02-Clipboard.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="954" data-original-width="1348" height="407" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCz9gfFLH0x5Dskc7DhIJbefdavlsfxjWRfi6D6yA9v0e55T1VQJV323QdGplrjFXGAFZRhncV25LaIZ4_rCotm7ymbRp3hLKGCVtSh2sP2xTGhxfZNQtHdDBVYICj-wwW242OwUXVGizGigwSHrfRUg15iKSU56YhyIGeiOoV4EOQc-RYDA/w576-h407/2022-09-11%2023_10_02-Clipboard.png" width="576" /></a></div><br /><span style="font-family: arial;"><br /></span></div><h3 style="text-align: left;"><br /></h3><h3 style="text-align: left;"><br /></h3><h3 style="text-align: left;"><br /></h3><h3 style="text-align: left;"><br /></h3><h3 style="text-align: left;"><br /></h3><h3 style="text-align: left;"><br /></h3><h3 style="text-align: left;"><br /></h3><h3 style="text-align: left;"><br /></h3><h3 style="text-align: left;"><br /></h3><h3 style="text-align: left;"><br /></h3><h3 style="text-align: left;">Critical successes chart</h3><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbe1ijyWH777rlY6s5VOlU2f9q7xAaR4sW7Zy4l13FLuz3iwxo1PBth9ZwTY6V-P380sgy6NK_a1OwnC4E5a68C4ipBa6m4fR0wfATXLkp0z-D3vTVoigY9EURfLVlux7TezBX-8jGzSjUSIaCryBerFalR_0bA2JlgAIpAzcJCvmzbj0ncQ/s1329/2022-09-11%2023_15_18-Clipboard.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="954" data-original-width="1329" height="412" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbe1ijyWH777rlY6s5VOlU2f9q7xAaR4sW7Zy4l13FLuz3iwxo1PBth9ZwTY6V-P380sgy6NK_a1OwnC4E5a68C4ipBa6m4fR0wfATXLkp0z-D3vTVoigY9EURfLVlux7TezBX-8jGzSjUSIaCryBerFalR_0bA2JlgAIpAzcJCvmzbj0ncQ/w573-h412/2022-09-11%2023_15_18-Clipboard.png" width="573" /></a></div><br /><div><br /></div><br /><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><h3 style="text-align: left;">Prayer reroll bonus rules in the Core Rule book</h3><div><ul style="text-align: left;"><li>Ship Chapel (p147) "grants +1 to the prayer reroll for the whole crew"</li><li>Preparatory prayer (p55) "you must make time before you jump into the fray, grants +1 to rerolls to the same Icon for that session"</li><li>Preparatory prayer in a Chapel (p56) "you must make time before you jump into the fray, grants +2 to rerolls to the same Icon for that session"</li></ul><h3 style="text-align: left;">Prayer reroll bonus rules interpretation</h3><div><div><ul style="text-align: left;"><li>+1 any skill: The ship you crew has a Chapel </li><li>+1 same icon: You made time for preparatory prayers to a specific icon</li><li>+2 same icon: The ship you crew has a Chapel <b>AND </b>You made time for preparatory prayers to a specific icon</li><li>+2 same icon: You made time for preparatory prayers to a specific icon in any chapel</li><li>+3 same icon: The ship you crew has a Chapel <b>AND </b>You made time for preparatory prayers to a specific icon in any Chapel</li></ul></div></div></div>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-14798995261187117012021-12-14T19:05:00.003+00:002023-04-15T09:54:31.285+00:00Foundry Hosting on AWS Free Tier<p> This short guide shows how to host a Foundry instance on AWS for free (for 1 year).</p><h2 style="text-align: left;">Get Foundry</h2><div>This bit is not free, you need to own foundry to run your games in it. Head on over to <a href="https://foundryvtt.com/">https://foundryvtt.com/</a> there are numerous YouTube videos explaining why it's so great. I made the jump from Roll20 to Foundry VTT and have not looked back!</div><div><br /></div><h2 style="text-align: left;">Sign up for AWS</h2><div>You can get a free tier account, you will need to supply some credit card details to get setup. Head over to <a href="https://aws.amazon.com/free">https://aws.amazon.com/free</a></div><div><br /></div><h2 style="text-align: left;">Setup Foundry on an AWS Free Tier EC2 Instance</h2><div>Login to your new AWS account and head over to the EC2 page</div><div><ul style="text-align: left;"><li>Launch a windows server instance - pick the free tier!</li><li>Create a key pair so you can login</li><li>Once its up and running Connect to the instance with RDP </li><ul><li>You will need the key pair to get the admin password</li></ul><li>Download and install Foundry</li><li>Download and use nssm <a href="https://nssm.cc/">https://nssm.cc/</a> to turn Foundry into a service</li><ul><li>This page explains how to use nssm <a href="https://nssm.cc/usage">https://nssm.cc/usage</a></li><li>The 'local files' are now located at: C:\Windows\System32\config\systemprofile\AppData\Local\FoundryVTT</li></ul></ul><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhlGZKI0r2HrHcofCJNJPTMUWyFhp1x3TWierijsUsd6Ov5kX3tZ5hYz_HIJ-KUDoQbOlUbJ2HtlTIPrlVs0G84pPmor2IpWwKvloMTJb05cNJhe6NgVMm4J6Sqd8Fzyc4Cl-PYxKjQAUJyA0oJGn_Ot9NzajVPsCzVcWjPI5vmSaMm6h-WGw=s1047" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="365" data-original-width="1047" height="139" src="https://blogger.googleusercontent.com/img/a/AVvXsEhlGZKI0r2HrHcofCJNJPTMUWyFhp1x3TWierijsUsd6Ov5kX3tZ5hYz_HIJ-KUDoQbOlUbJ2HtlTIPrlVs0G84pPmor2IpWwKvloMTJb05cNJhe6NgVMm4J6Sqd8Fzyc4Cl-PYxKjQAUJyA0oJGn_Ot9NzajVPsCzVcWjPI5vmSaMm6h-WGw=w400-h139" width="400" /></a></div><br /><div><br /></div><ul style="text-align: left;"><li>Browse to localhost:30000 from the server and set your </li><ul><li>Foundry admin password! Make it a strong one</li><li>[Optional] change the default port </li></ul></ul><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgCdAjZlkbXpTRt-GnPga7MtFhk__Mq_QXRjXm6i8K-AdgWLK_FN89GCe92hNvLKmcQl6Z5WkpI9uvRiXTjwvQgt1bGC00YVrNvRe9tM-6fNhuUGxnPPg32xCw2RhAi6UlIZ1N6LRoaRQzI28hgwFNdEFs_ND_0o7gsNTZXbcl2USCA7EQDbQ=s1326" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="677" data-original-width="1326" height="204" src="https://blogger.googleusercontent.com/img/a/AVvXsEgCdAjZlkbXpTRt-GnPga7MtFhk__Mq_QXRjXm6i8K-AdgWLK_FN89GCe92hNvLKmcQl6Z5WkpI9uvRiXTjwvQgt1bGC00YVrNvRe9tM-6fNhuUGxnPPg32xCw2RhAi6UlIZ1N6LRoaRQzI28hgwFNdEFs_ND_0o7gsNTZXbcl2USCA7EQDbQ=w400-h204" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Here I have done the basic setup and started to add Game Systems</td></tr></tbody></table><ul style="text-align: left;"><li>Open the Foundry port in the windows firewall</li><li>Open the Foundry port in the EC2 Security group, inbound rules</li></ul><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjzHfSzuN4WyqQMFEWmhfICsMokhdXa78-UbdnStvLHdJRkr6GYR0_y9P4CyjtaS6n1LSxSrOMjaGDIS-f8WQFtdIBfj8QR4iivaUqRW5Avb6PQ0tEpCxj4o4AhLpN-kxhgnlOdg429bMTrDSOAykOEua9Po6OHJ36nos7dxiX9x6B00dbYRA=s845" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="606" data-original-width="845" height="286" src="https://blogger.googleusercontent.com/img/a/AVvXsEjzHfSzuN4WyqQMFEWmhfICsMokhdXa78-UbdnStvLHdJRkr6GYR0_y9P4CyjtaS6n1LSxSrOMjaGDIS-f8WQFtdIBfj8QR4iivaUqRW5Avb6PQ0tEpCxj4o4AhLpN-kxhgnlOdg429bMTrDSOAykOEua9Po6OHJ36nos7dxiX9x6B00dbYRA=w400-h286" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiDCyBknM3RvY72bcD75zYSLRIMbefV04PsE60DRCvLfIUNgFw8rmFkeo7HVtj59OdE27ckLO7uaDPRgnvs_q5vG3mePSWW6GbM1KxTU8Yq6nYY_nzf6B9Cn4LiWVIkn05yRFVh3CLSVJHTCe5hbIt576_MK7TS56pJIXVASTC5AGAWzWJ7xQ=s1436" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="651" data-original-width="1436" height="181" src="https://blogger.googleusercontent.com/img/a/AVvXsEiDCyBknM3RvY72bcD75zYSLRIMbefV04PsE60DRCvLfIUNgFw8rmFkeo7HVtj59OdE27ckLO7uaDPRgnvs_q5vG3mePSWW6GbM1KxTU8Yq6nYY_nzf6B9Cn4LiWVIkn05yRFVh3CLSVJHTCe5hbIt576_MK7TS56pJIXVASTC5AGAWzWJ7xQ=w400-h181" width="400" /></a></div><br /><div><ul style="text-align: left;"><ul><li>Rule 1 allows the traffic to the Foundry services that is on port 30000 by default</li><ul><li>This you need to allow for any IP that will join - 0.0.0.0/0 means its fully open</li></ul><li>Rule 2 if you want to share a folder to your local machine to copy content - I suggest you just allow for the IP range of your machine, which you can pick from the dropdown</li><li>Rule 3 is for RDP access - this rule is added automatically - if you are normal home internet, you will need to check the IP as your home IP will change from time to time</li></ul></ul></div><ul style="text-align: left;"><li>Assign an Elastic IP Address (a static IP) to your instance in AWS - this means the external link for your instance will stay the same always </li><ul><li>If you are really keen set up an A record on a domain you own to point to the now static IP of your AWS instance</li></ul></ul><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiorPe-WWdZF6UQrzJOywqLkbuIqSEaXAkHIyYLkIsbUh2xkezNagbIPv4VJUr7_FIcwncpgNKeciHm_jUD8Nb3q5Gdh5WGGGebkiiBzZlEWdwixuw1ipxg4jt4ibV9WZDXsmna842D0IYEGf6s7nhOtAlTU9px8tbKV-VGzvD3qAlMFD9-eA=s1087" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="243" data-original-width="1087" height="90" src="https://blogger.googleusercontent.com/img/a/AVvXsEiorPe-WWdZF6UQrzJOywqLkbuIqSEaXAkHIyYLkIsbUh2xkezNagbIPv4VJUr7_FIcwncpgNKeciHm_jUD8Nb3q5Gdh5WGGGebkiiBzZlEWdwixuw1ipxg4jt4ibV9WZDXsmna842D0IYEGf6s7nhOtAlTU9px8tbKV-VGzvD3qAlMFD9-eA=w400-h90" width="400" /></a></div><div><br /></div><ul style="text-align: left;"><li>Check if you can load Foundry from your local PC & let the games commence!</li></ul><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiZ7qD4OXvMDoGVXRzSn1WjN88ClvuVbkCZeGtCydcQpwofaJgdmFs_-THx_KV8Sl9FNePec-uRUs7snuBg0Ndk0yfFd4wKS2YQhJZsg3Y3LApjnqG_clVo2JWVhGyXDBoZJK9Q--GsXqTjnfTgmFbOuGg_SNXWlyUOC9MnJJrLVcZ8JqhqMg=s1200" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="818" data-original-width="1200" height="272" src="https://blogger.googleusercontent.com/img/a/AVvXsEiZ7qD4OXvMDoGVXRzSn1WjN88ClvuVbkCZeGtCydcQpwofaJgdmFs_-THx_KV8Sl9FNePec-uRUs7snuBg0Ndk0yfFd4wKS2YQhJZsg3Y3LApjnqG_clVo2JWVhGyXDBoZJK9Q--GsXqTjnfTgmFbOuGg_SNXWlyUOC9MnJJrLVcZ8JqhqMg=w400-h272" width="400" /></a></div></div><div><br /></div><div><ul style="text-align: left;"><li>An especially handy Foundry module is bellows - lets you stream music from YouTube in foundry <a href="https://github.com/casualchameleon/Bellows">https://github.com/casualchameleon/Bellows</a></li></ul></div><div><br /></div>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-58458322532836559962021-05-08T08:36:00.001+00:002021-05-08T08:36:18.016+00:00Interesting Leadership Books<p>To make a difference with technology you have to be effective at leading change. There are lots of things out there about change leadership! At the end of the day it comes down to people, influence and following a dynamic process. There is no quick fix.</p><p>Here are some interesting books about leadership that I found very helpful and which have shaped the way I approach change management.</p><p>I like to consume this kind of thoughtful content on my commute so I use audible. </p><h3 style="text-align: left;"><a href="https://www.audible.co.uk/pd/The-7-Habits-of-Highly-Effective-People-Audiobook/B004FTLW1I" target="_blank">The 7 Habits of Highly Effective People by Stephen R Covey</a></h3><p></p><ul style="text-align: left;"><li>Timeless advice, sold millions of copies..</li><li>I cannot recommend this book highly enough </li></ul><p></p><h3 style="text-align: left;"><a href="https://www.amazon.co.uk/Turn-Ship-Around-Building-Breaking/dp/0241250943/" target="_blank">Turn the Ship Around by L. David Marquet</a></h3><p></p><ul style="text-align: left;"><li>Fascinating story, learn about leadership and nuclear subs</li><li>I'd adopted "point and shoot / say it outload" approach to critical IT config changes </li></ul><h3 style="text-align: left;"><a href="https://www.audible.co.uk/pd/The-Phoenix-Project-Audiobook/B00VB034GK" target="_blank">The Phoenix Project by Kim, Behr & Spafford</a></h3><div><ul style="text-align: left;"><li>Part of the Dev Ops movement, but also a great story about change</li><li>The problems the protagonists face are so real it might gave IT people nightmares</li></ul></div><p></p>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-87999771157272911972018-02-26T10:11:00.000+00:002022-02-26T10:12:33.892+00:00Windows Server 2016 Evaluation to StandardTarget Edition : ServerStandard<br />
Target Edition : ServerDatacenter<br />
<br />
<pre>Dism /online /Set-Edition:<edition name=""> /AcceptEula /ProductKey:12345-67890-12345-67890-12345 </edition>
</pre>
<edition name="">Where it <edition name="">is the higher edition that you want to change to. (ServerStandard or ServerDatacenter) </edition></edition><a href="https://social.technet.microsoft.com/Forums/en-US/5418a7cd-23d1-48c3-acbd-9300211e2508/upgrading-from-windows-server-2016-standard-quotevaluationquot-to-a-fully-registered-version?forum=ws2016" target="_blank">Source</a>Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.comtag:blogger.com,1999:blog-10262718.post-89586358456536045332018-02-18T12:24:00.001+00:002018-02-18T12:24:14.429+00:00Connect to Windows 2016 HyperV Core with delegated credentials / CredSSPCredSSP authentication is currently disabled on the local client. You must be running with administrator privileges in order to enable CredSSP<br />
<br />
<h3>
On Win2016 desktop CLIENT</h3>
<br />
<li>Powershell:</li>
<pre>PS C:\Users\Administrator>start-service winrm
PS C:\Users\Administrator>Enable-WSManCredSSP -Role client -DelegateComputer *
PS C:\Users\Administrator>stop-service winrm</pre>
<br />
<li>GPEDIT (as administrator)</li>
Local Computer Policy > Computer Configuration > Administrative Templates > System > Credentials Delegation:
<pre>Allow delegating fresh credentials with NTLM-only server authentication</pre>
<li> Set: "Enabled" and "Add servers to the list"
<li> Show: enter "WSMAN/*" as Value</li>
<li>Fire up Hyper-V Manager and connect to server only with IP-address and enter as user "[IP Address]\[username]” and set the password.</li>
</br>
<a href="https://social.technet.microsoft.com/Forums/en-US/8884b81e-0576-4764-a29d-ce7bec5c9ee9/hyperv-server-2016-tp4-howto-manage-hyperv-with-desktopos-hyperv-manager-and-bug?forum=WinServerPreview">Source</a>
Andyhttp://www.blogger.com/profile/08511517742366161690noreply@blogger.com