<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Simple Dev on Wingate365</title><link>https://blog.wingate365.com/tags/simple-dev/</link><description>Recent content in Simple Dev on Wingate365</description><generator>Hugo</generator><language>en-gb</language><lastBuildDate>Sun, 19 Apr 2026 14:35:10 +0000</lastBuildDate><atom:link href="https://blog.wingate365.com/tags/simple-dev/index.xml" rel="self" type="application/rss+xml"/><item><title>Trying out GitHub Copilot Agent for a Functional Task?</title><link>https://blog.wingate365.com/2026/04/trying-out-github-copilot-agent-for.html</link><pubDate>Sun, 19 Apr 2026 14:35:00 +0000</pubDate><guid>https://blog.wingate365.com/2026/04/trying-out-github-copilot-agent-for.html</guid><description>&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;br /&gt;I've been using GitHub for a while https://github.com/andywingate but had never touched its agentic features. Working on the &lt;a href="https://nubimancy.com/"&gt;Nubimancy project&lt;/a&gt; gave me a good excuse. This is a practical breakdown of what I used, what it saved me, and where human judgement still mattered.&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Full context is in the&amp;nbsp;&lt;a href="https://nubimancy.com/2026/03/15/from-blueprint-to-build-validating-the-data-foundation/"&gt;Nubimancy project log&lt;/a&gt; - this post is about the tools and the approach.&lt;/p&gt;
&lt;h2&gt;The Task&lt;/h2&gt;
&lt;p&gt;Validate ~75 CSV schema files against Business Central master data import requirements. Check field names, required fields, data types, and format compatibility. Important, methodical, time-consuming if done manually. There are a number of extensions in the mix also on top of the standard BC tables. I gave it to a GitHub Copilot agent. Here's exactly what I did.&lt;/p&gt;</description></item><item><title>Exploring the Middle Ground: Simple Dev for Dynamics 365 Business Central</title><link>https://blog.wingate365.com/2024/04/dynamics-365-bc-al-for-coding.html</link><pubDate>Sat, 20 Apr 2024 11:18:00 +0000</pubDate><guid>https://blog.wingate365.com/2024/04/dynamics-365-bc-al-for-coding.html</guid><description>&lt;p&gt;&lt;strong&gt;Microsoft’s low-code solutions&lt;/strong&gt;, particularly in the realm of &lt;strong&gt;business applications&lt;/strong&gt; and &lt;strong&gt;Dynamics 365 (D365)&lt;/strong&gt;, offer several compelling advantages:&lt;/p&gt;&lt;div aria-description="Your personal and company data are protected" class="content" tabindex="0"&gt;&lt;div class="ac-container ac-adaptiveCard"&gt;&lt;div class="ac-textBlock"&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Faster Development&lt;/strong&gt;: Low-code platforms, such as &lt;strong&gt;Power Apps&lt;/strong&gt;, allow developers to create applications with &lt;strong&gt;minimal coding effort&lt;/strong&gt;. This accelerates the development process, enabling businesses to meet demand more swiftly.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cost-Effectiveness&lt;/strong&gt;: By reducing the need for extensive custom code, low-code solutions lead to &lt;strong&gt;lower development costs&lt;/strong&gt;. Organizations can achieve their goals without investing excessive time and resources.&lt;/p&gt;</description></item><item><title>Power up D365BC Power Automate Flows with API Pages</title><link>https://blog.wingate365.com/2024/03/power-up-d365bc-power-automate-flows.html</link><pubDate>Sat, 16 Mar 2024 13:00:00 +0000</pubDate><guid>https://blog.wingate365.com/2024/03/power-up-d365bc-power-automate-flows.html</guid><description>&lt;p&gt;The 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.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The standard set of API&amp;rsquo;s are pretty great to get started on this - check out the docs here &lt;a href="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/api-reference/v2.0/"&gt;API (v2.0) for Dynamics 365 Business Central - Business Central | Microsoft Learn&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;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.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is a similar exercise from MSFT for reference &lt;a href="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-develop-custom-api"&gt;Developing a custom API - Business Central | Microsoft Learn&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;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. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We will use VS code &lt;a href="https://code.visualstudio.com/download"&gt;Download Visual Studio Code - Mac, Linux, Windows&lt;/a&gt; and a few addons  &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-dynamics-smb.al"&gt;AL Language extension for Microsoft Dynamics 365 Business Central - Visual Studio Marketplace&lt;/a&gt; &amp;amp; &lt;a href="https://marketplace.visualstudio.com/items?itemName=andrzejzwierzchowski.al-code-outline"&gt;AZ AL Dev Tools/AL Code Outline - Visual Studio Marketplace&lt;/a&gt;&lt;/div&gt;&lt;h2 style="text-align: left;"&gt;Getting started &lt;/h2&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Create a new AL in VS code project by tapping F1, use the AL:Go! from the command pallet&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Connect your project to a BC trial sandbox / CDX / other instance&lt;/li&gt;&lt;li&gt;You will need to have full admin access and SUPER permission granted &lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA84ctCHqx7UH9IqxOc9HzZA44-XodK1Ysntp25eSSUjlKB-3L47atP_cFRJk19hJn_El006iGXAC59AhVhfE72amS65UhGV70Nl2cOo-ijDcNp6jWWDISmJxmsSquE1oMqMStYpF6V0Dtb3aIx_Jjrth8pMqINRg-gzC0Wg6dv1zrpgzieLLf/s1016/2024-03-16_11h24_17.png"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;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;"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span style="text-align: left;"&gt;Add a tenant definition line to the launch.json to define your tenancy ID, update the sandbox name if needed&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;F1 &amp;gt; AL: Download Symbols &lt;/li&gt;&lt;/ul&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;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;"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span style="text-align: left;"&gt;This action gets the source code / lists of objects from the sandbox you defined above&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;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;"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;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.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2 style="text-align: left;"&gt;Create an API page&lt;/h2&gt;&lt;div&gt;Now we are ready to make some new objects and deploy them to the sandbox as a DEV extension. &lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Use the AZ New AL file wizard, from the right click menu or command pallet, to start creating a new object of type PAGE&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;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;"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;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"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;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;"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;b&gt;Object Id&lt;/b&gt;: Leave the suggestion and if you get stuck read this &lt;a href="https://yzhums.com/21335/"&gt;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)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Object Name&lt;/b&gt;: Use something sensible here, you can have spaces&lt;/li&gt;&lt;li&gt;&lt;b&gt;Source Table Name&lt;/b&gt;: Start typing to filter all the tables in BC, this is the single table that all the fields in you API will come from &lt;/li&gt;&lt;li&gt;&lt;b&gt;Page Type&lt;/b&gt;: Set to API&lt;/li&gt;&lt;li&gt;&lt;b&gt;API Publisher&lt;/b&gt;: this best defines an organisational level term &lt;/li&gt;&lt;li&gt;&lt;b&gt;API Group&lt;/b&gt;: this best defines the type of API&lt;/li&gt;&lt;li&gt;&lt;b&gt;API Version&lt;/b&gt;: Set a version number&lt;/li&gt;&lt;li&gt;&lt;b&gt;Entity name&lt;/b&gt;: what is defined by 1 row of the table ?&lt;/li&gt;&lt;li&gt;&lt;b&gt;EntitySet Name&lt;/b&gt;: what is the collective term for many rows ?&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;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. &lt;/div&gt;&lt;div&gt; &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;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;"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;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&amp;hellip; &lt;/div&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;The API page can be used to read and write data. Flow fields like &amp;lsquo;Balance&amp;rsquo; 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.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;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;"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;If you do want things in a particular order, define it here, or tweak the code of the file that&amp;rsquo;s created&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;You can click finish as this point and review the new API page object that you have just created&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6gsiIwpDRzcVsM0MAqe1KBAXUjKUje6927Guvz0EN4U40lyoNsF3YHhMOzOrEXgkxPcWuY0jVunXC8EXTLrnWs_gHtuZiZvMThYTU1Pbtr1I4MfOJldhKfshXD5dCB4mPeXl6AN1SUk-K2lmbXvsdQ8OO4nCYntTFtGqplkiIdn9AtA3ha2LU/s1284/2024-03-16_12h22_28.png"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;But before your API is available (as above) in Power Automate we need to publish the app to the sandbox&lt;/div&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;F1 &amp;gt; AL Publish (ok ctrl+F5)&lt;/li&gt;&lt;/ul&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;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;"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Publish without debugging will simply install / update the app on the sandbox and open BC for you on page 22 (that&amp;rsquo;s what we asked it to do in launch.json)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div&gt;Now the app is published ok&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;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;"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;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. &lt;/div&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;The main practical difference of PTE and Dev ext, is that PTE ext remain present when BC is updated. Dev ext are removed. &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;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;"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Additionally, in a Power Automate flow that connects to a company in this envienment we will also now see our new API.&lt;/div&gt;&lt;h2 style="text-align: left;"&gt;Writing data&lt;/h2&gt;&lt;div&gt;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!)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;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;"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;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&amp;rsquo;ve just hardcoded in some text. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Save and test the flow&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj30D2hDlOERIYBODwMUTXZAN5VDvJPLsx2917pa0tjggnKOEVvZ5haL0Be92LRvtlU1ZuqutgyLT2R4lG0Hz9lzcm4tYLu7GeWkukXvXmJtaaCChK6XKdz4ZBePuiIqtQq_E_nSC3OQnvOgiDOwd3NuARb_4kaR2aO6roiUWxGga9Sw2EkNK1W/s1136/2024-03-16_12h28_50.png"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Over in BC - a new vendor as defined by the params I supplied:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;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;"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Shows as created by the flow owner, who naturally would need a BC license&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;h2 style="text-align: left;"&gt;Reading data&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;Data out - this API can also now be found in PowerBI for pulling out all the vendor data&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;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;"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;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;"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Finally if you need the full end point URL of the API page - here is how to build it up - &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="https://api.businesscentral.dynamics.com/v2.0/&amp;amp;lt;tenant"&gt;https://api.businesscentral.dynamics.com/v2.0/&amp;amp;lt;tenant&lt;/a&gt; Id&amp;gt;/&amp;lt;environment name&amp;gt;/api/&amp;lt;API publisher&amp;gt;/&amp;lt;API group&amp;gt;/&amp;lt;API version&amp;gt;/companies(&amp;lt;company id&amp;gt;)/&amp;lt;EntitySetName&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;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&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;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;"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is my API as a URL endpoint &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="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"&gt;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&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Read more about URL formatting here &lt;a href="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-develop-custom-api"&gt;Developing a custom API - Business Central | Microsoft Learn&lt;/a&gt; &amp;amp; &lt;a href="https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/api-reference/v2.0/endpoints-apis-for-dynamics"&gt;Endpoints for the APIs for Microsoft Dynamics 365 Business Central - Business Central | Microsoft Learn&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tested using an OData feed in PowerBI&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;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;"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Source code of the vendor table API page here &lt;a href="https://github.com/andywingate/d365bc-api4pa"&gt;GitHub - andywingate/d365bc-api4pa&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;That&amp;rsquo;s it, give it a try!&lt;/p&gt;</description></item><item><title>Migrate Mediawiki installation</title><link>https://blog.wingate365.com/2018/02/migrate-mediawiki-installation.html</link><pubDate>Sun, 18 Feb 2018 12:11:00 +0000</pubDate><guid>https://blog.wingate365.com/2018/02/migrate-mediawiki-installation.html</guid><description>&lt;h3&gt;
Old server&lt;/h3&gt;
&lt;li&gt;backup existing database - mysql dump&lt;/li&gt;
&lt;li&gt;copy files folder frp, public_html&lt;/li&gt;
&lt;br /&gt;
&lt;h3&gt;New Server&lt;/h3&gt;
&lt;li&gt;create new database, with same name/username &lt;/li&gt;
&lt;li&gt;restore into new database - mysql -u username -p new_database &amp;lt; data-dump.sql &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-import-and-export-databases-in-mysql-or-mariadb" target="_blank"&gt;source&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;copy files to public_html&lt;/li&gt;
&lt;li&gt;edit LocalSettings.php:&amp;nbsp;&lt;a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgServer" style="background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: #0b0080; font-family: monospace, Courier; font-size: 14px; text-decoration-line: none;" title="Special:MyLanguage/Manual:$wgServer"&gt;$wgServer&lt;/a&gt;&amp;nbsp;- update to new URL&lt;/li&gt;</description></item><item><title>TLS/SSL for Web Services</title><link>https://blog.wingate365.com/2015/04/ssl-for-web-services.html</link><pubDate>Sun, 19 Apr 2015 21:40:00 +0000</pubDate><guid>https://blog.wingate365.com/2015/04/ssl-for-web-services.html</guid><description>&lt;p&gt;TLS protection should be a standard security policy these days. It&amp;rsquo;s common place for servers hosting web pages and web services.&lt;br /&gt;
&lt;br /&gt;
Certificates are inexpensive and relatively simple to setup and use. The basic outline is that you generate a private key on your server, pass this to the CA. They will use this to generate the Certificate and public key. They send you back the certificate and publish the public key on their servers. The certificate, private key and the CA&amp;rsquo;s authority chain certificates are installed on your server and bound/configures to be utilised within the the webservice in question.&lt;br /&gt;
&lt;br /&gt;
A 3rd party browser pointed to your https URL will request the certificate, which it uses to lookup the host servers details with the CA and obtain the public key. The public key is then used by the browser to lock the session key that it generates. Only the specific private key can unlock and obtain the session key that was locked by the related public key. Which is what the host server does and then both machines have identical keys to use for all further communication in that session.&lt;br /&gt;
&lt;br /&gt;
Here are the main elements and terms you may come across when setting up SSL protection using a Certificate Authority (CA)&lt;br /&gt;
&lt;br /&gt;
Machines:&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;</description></item><item><title>phpmyadmin mcrypt issue / Ubuntu Server 14.04 / Fixed</title><link>https://blog.wingate365.com/2014/07/phpmyadmin-mcrypt-issue-ubuntu-server.html</link><pubDate>Sat, 26 Jul 2014 18:00:00 +0000</pubDate><guid>https://blog.wingate365.com/2014/07/phpmyadmin-mcrypt-issue-ubuntu-server.html</guid><description>&lt;p&gt;myphpadmin says: &amp;ldquo;The mcrypt extension is missing. Please check your PHP configuration&amp;rdquo;&lt;br /&gt;&lt;/p&gt;
&lt;pre&gt;
&lt;/pre&gt;
&lt;pre&gt;apt-get purge libapache2-mod-php5 php5 
apt-get install libapache2-mod-php5 php5

sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt 
sudo service apache2 restart
&lt;/pre&gt;</description></item><item><title>SSRS 2008 R2 Report parameters for MySQL datasources</title><link>https://blog.wingate365.com/2014/04/ssrs-2008-r2-report-parameters-for.html</link><pubDate>Tue, 08 Apr 2014 07:41:00 +0000</pubDate><guid>https://blog.wingate365.com/2014/04/ssrs-2008-r2-report-parameters-for.html</guid><description>&lt;p&gt;If you are using MySQL databases in SSRS you have to manually add the parameters.&lt;br /&gt;
&lt;br /&gt;
For a date range&lt;br /&gt;
&lt;br /&gt;
Manually add two parameters&lt;br /&gt;
@start (date/time)&lt;br /&gt;
@end (date/time)&lt;br /&gt;
&lt;br /&gt;
Go into dataset properties&lt;br /&gt;
Updated the query with appropriate where clause:&lt;br /&gt;
&lt;br /&gt;
e.g. WHERE table.date between @start and @end&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;h1 id="the-system-gives-an-error-warning-about-defining-the-parameters-ignore-this"&gt;The system gives an error warning about defining the parameters, ignore this.&lt;br /&gt;&lt;/h1&gt;
&lt;br /&gt;
Define parameters in dataset properties&lt;br /&gt;
link parameter name "@start" with Parameter Value "@start" and same for @end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</description></item><item><title>Life Keeper Install Notes</title><link>https://blog.wingate365.com/2014/03/life-keeper.html</link><pubDate>Sat, 15 Mar 2014 00:31:00 +0000</pubDate><guid>https://blog.wingate365.com/2014/03/life-keeper.html</guid><description>&lt;p&gt;Install SQL&lt;br /&gt;
&lt;br /&gt;
SQL install on C:&amp;lt;br /&amp;gt;
Data on E:&amp;lt;br /&amp;gt;
Logs on F:&amp;lt;br /&amp;gt;
&lt;br /&gt;
Restore db, add logins&lt;br /&gt;
&lt;br /&gt;
IIS, export the metabase to other nodes, don&amp;rsquo;t use shared config&lt;br /&gt;
Ensure admin password is the same on all nodes&lt;br /&gt;
&lt;br /&gt;
Ensure ASP.NET v4 installed (not 4.5)&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;</description></item><item><title>Photo Station QNAP</title><link>https://blog.wingate365.com/2013/11/photo-station-qnap.html</link><pubDate>Sun, 10 Nov 2013 11:06:00 +0000</pubDate><guid>https://blog.wingate365.com/2013/11/photo-station-qnap.html</guid><description>&lt;p&gt;If after trying the in-built photo web service for a bit you give up on it. Which is inevitable as its terribly slow, using normal home broadband in any case. It can be a pain to then remove all the thumbs clogging up your photo archive. But this can be done simply via SSH just move all the contents of the .@__thumb folders created to a single folder, check your not deleting anything you dont want to then wax the lot.&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;</description></item><item><title>SVN / Subversion / Source Control</title><link>https://blog.wingate365.com/2013/07/snv-subversion-source-control.html</link><pubDate>Fri, 19 Jul 2013 19:38:00 +0000</pubDate><guid>https://blog.wingate365.com/2013/07/snv-subversion-source-control.html</guid><description>&lt;p&gt;Quick &amp;lsquo;what I did&amp;rsquo; to setup Subversion this week to deal with SSRS projects and reports.&lt;br /&gt;
&lt;br /&gt;
Installed the standard edition of VisualSVN Server&lt;br /&gt;
&lt;a href="http://www.visualsvn.com/server/download/?"&gt;&lt;a href="http://www.visualsvn.com/server/download/"&gt;http://www.visualsvn.com/server/download/&lt;/a&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Installed TortoiseSVN on users machines&lt;br /&gt;
&lt;a href="http://tortoisesvn.net/downloads.html"&gt;&lt;a href="http://tortoisesvn.net/downloads.html"&gt;http://tortoisesvn.net/downloads.html&lt;/a&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The setup on the server was very easy, added users via the management interface, set the port and made sure the firewall was going to allow the connections. Created a couple of repos for the various project files.&lt;br /&gt;
&lt;br /&gt;
On local PC checked-out the repo folder to a local drive folder and added the project files, simply right click to commit the files to the repo - marking all the files to be added.&lt;br /&gt;
&lt;br /&gt;
Logging all the commits makes it very easy to roll back and check on what activity is going on. Clearly it makes sense to split out as best you can the different projects into . I did notice it&amp;rsquo;s worth it to un-version the user file that each project creates by default.&lt;br /&gt;
&lt;br /&gt;
Next thing to try is the VisualSVN plugin for visual studio which requires TortoiseSVN to work. And read the rest of the manual as TortoiseSVN politely recommends&amp;hellip;&lt;br /&gt;
&lt;br /&gt;
Edit: Now also added the Visual Studio plugin from VisualSVN, which is fantastic and very straight forward. Do all your commits, check the logs etc from within Visual Studio.&lt;/p&gt;</description></item><item><title>Storm: Great free app to test SOAP/REST WSDL feeds</title><link>https://blog.wingate365.com/2013/06/storm-great-free-app-to-test-soaprest.html</link><pubDate>Sat, 22 Jun 2013 14:06:00 +0000</pubDate><guid>https://blog.wingate365.com/2013/06/storm-great-free-app-to-test-soaprest.html</guid><description>&lt;p&gt;Been working on a project that uses WSDL / Web Service feeds. This is a handy tool to quickly test out feeds, check access and contents of the envelope.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://storm.codeplex.com/"&gt;&lt;a href="http://storm.codeplex.com/"&gt;http://storm.codeplex.com/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>QNAP Online RAID 5 Migration</title><link>https://blog.wingate365.com/2013/04/qnap-online-raid-5-migration.html</link><pubDate>Sun, 07 Apr 2013 21:48:00 +0000</pubDate><guid>https://blog.wingate365.com/2013/04/qnap-online-raid-5-migration.html</guid><description>&lt;p&gt;Recently added two new physical drives into a QNAP NAS (TS-419P II) and performed online migration of the existing single drive to a 3 drive RAID 5 setup, here is how I got on.&lt;br /&gt;
&lt;br /&gt;
I shut down the NAS, although I later read this is unnecessary and the drives can be hot swapped, selected the previous drive from the list in RAID management in the admin pages. Clicked the MIGRATE button, selected the two new drives and chose RAID 5. Full documentation &lt;a href="http://docs.qnap.com/nas/en/index.html?raid_management.htm" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The system warns that all services will be shut down and shows a % progress for the migration. This took about 12 hrs to get to 49% where it got stuck and without intervention aborted the migration and reverted  back to the single drive setup.&lt;br /&gt;
&lt;br /&gt;
Second try, after googling my problem, this time I manually disabled all of the QPKG applications through the admin pages. Again took about 12 hrs to get to 49% where it stuck for a few hrs. Further reading on the forums mentions mySQL and JAVA as being two particular packages that might need a manual kill (SSH in and use the kill -9 command&lt;pid&gt;). &lt;/pid&gt;&lt;br /&gt;
&lt;br /&gt;
After Java was stopped the progress updated to 50% and the screen displayed the 3 drives as a RAID 5 array, the remainder of the migration took another 12 hrs to complete. Here is the item in the RAID management table.&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;</description></item></channel></rss>