{"id":36814,"date":"2023-12-21T14:58:49","date_gmt":"2023-12-21T09:28:49","guid":{"rendered":"https:\/\/www.inogic.com\/blog\/?p=36814"},"modified":"2023-12-27T15:01:41","modified_gmt":"2023-12-27T09:31:41","slug":"custom-actions-with-power-automate-desktop-flows","status":"publish","type":"post","link":"https:\/\/www.inogic.com\/blog\/2023\/12\/custom-actions-with-power-automate-desktop-flows\/","title":{"rendered":"Custom Actions with Power Automate Desktop Flows"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>A custom action in desktop flow is a feature designed to automate repetitive tasks seamlessly.<br \/>\nThis blog provides a comprehensive guide on designing and leveraging custom actions in the desktop version of Power Automate flows. The journey starts with a step-by-step procedure to create these custom actions, offering a detailed walkthrough of the process to upload them within the desktop Power Automate flows environment.<\/p>\n<p>Certainly! In this scenario, a custom action in the desktop flow is employed to automatically download files linked to various activities. Whether these files are attachments or stored in notes, the custom action streamlines the process, offering users the flexibility to choose a personalized destination path for efficient file organization. This automation enhances efficiency, saves time, and empowers users with control over their file management preferences.<\/p>\n<p><strong>Pre-requisite:<\/strong> To create custom action in Power Automate for desktop flows you need the following things:<\/p>\n<p>1. NET Framework 4.7.2 SDK or above.<\/p>\n<p>2. Visual Studio 2022 or above<\/p>\n<p>3. Power Automate desktop v2.32 or above.<\/p>\n<p>4. The Action SDK<\/p>\n<p><strong>Step 1:<\/strong> <strong>Create a custom action<\/strong><\/p>\n<p>Open Visual Studio 2022 -&gt; Create sample project -&gt; Go to Tools -&gt; Nugget Package Manager -&gt; Package Manager Console.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36815\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/1Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"1653\" height=\"866\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/1Custom-Actions-with-Desktop-Flows.jpeg 1653w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/1Custom-Actions-with-Desktop-Flows-300x157.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/1Custom-Actions-with-Desktop-Flows-1024x536.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/1Custom-Actions-with-Desktop-Flows-768x402.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/1Custom-Actions-with-Desktop-Flows-1536x805.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/1Custom-Actions-with-Desktop-Flows-660x346.jpeg 660w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/1Custom-Actions-with-Desktop-Flows-380x200.jpeg 380w\" sizes=\"(max-width: 1653px) 100vw, 1653px\" \/><\/p>\n<p>Run the below commands inside the NuGet Package Console.<\/p>\n<p>Action SDK:<br \/>\n<strong>NuGet\\Install-Package Microsoft.PowerPlatform.PowerAutomate.Desktop.Actions.SDK -Version 1.4.232.23122-rc<\/strong><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36834\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/2Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"1827\" height=\"279\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/2Custom-Actions-with-Desktop-Flows.jpeg 1827w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/2Custom-Actions-with-Desktop-Flows-300x46.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/2Custom-Actions-with-Desktop-Flows-1024x156.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/2Custom-Actions-with-Desktop-Flows-768x117.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/2Custom-Actions-with-Desktop-Flows-1536x235.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/2Custom-Actions-with-Desktop-Flows-660x101.jpeg 660w\" sizes=\"(max-width: 1827px) 100vw, 1827px\" \/><\/p>\n<p>Power Automate desktop \u2013 Visual Studio templates:<\/p>\n<p>dotnet new install Microsoft.PowerPlatform.PowerAutomate.Desktop.Actions.Templates::1.0.0-rci<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36833\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/3Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"1794\" height=\"276\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/3Custom-Actions-with-Desktop-Flows.jpeg 1794w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/3Custom-Actions-with-Desktop-Flows-300x46.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/3Custom-Actions-with-Desktop-Flows-1024x158.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/3Custom-Actions-with-Desktop-Flows-768x118.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/3Custom-Actions-with-Desktop-Flows-1536x236.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/3Custom-Actions-with-Desktop-Flows-660x102.jpeg 660w\" sizes=\"(max-width: 1794px) 100vw, 1794px\" \/><\/p>\n<p>Create a new power automate project as mentioned below.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36832\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/4Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"1878\" height=\"964\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/4Custom-Actions-with-Desktop-Flows.jpeg 1878w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/4Custom-Actions-with-Desktop-Flows-300x154.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/4Custom-Actions-with-Desktop-Flows-1024x526.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/4Custom-Actions-with-Desktop-Flows-768x394.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/4Custom-Actions-with-Desktop-Flows-1536x788.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/4Custom-Actions-with-Desktop-Flows-660x339.jpeg 660w\" sizes=\"(max-width: 1878px) 100vw, 1878px\" \/><\/p>\n<p>Once a project is created successfully, you can proceed with the code. In this illustration we have written \/used the below code however it may vary depending upon the use case or the actual scenario.<\/p>\n<pre class=\"lang:css gutter:true start:1\"><em>using System;<\/em>\r\n\r\n<em>using System.IO;<\/em>\r\n\r\n<em>using Microsoft.PowerPlatform.PowerAutomate.Desktop.Actions.SDK;<\/em>\r\n\r\n<em>using Microsoft.PowerPlatform.PowerAutomate.Desktop.Actions.SDK.Attributes;<\/em>\r\n\r\n<em>namespace Modules.CustomActions<\/em>\r\n\r\n<em>{<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0 [Action(Id = \"Action1\", Order = 1, FriendlyName = \"Custom Action\", Description = \"The action is used to download notes\/attachments\")]<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0 [Throws(\"ActionError\")] \/\/ TODO: change error name (or delete if not needed)<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0 public class Action1 : ActionBase<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0 {<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #region Properties<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ File path where the downloaded file will be stored<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 [InputArgument(FriendlyName = \"File Path\", Description = \"File Path\")]<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 public string filepath { get; set; }<\/em>\r\n\r\n<em>\u00a0<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ File path where the downloaded file will be stored<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 [InputArgument(FriendlyName = \"Document Body\", Description = \"document Body\")]<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 public string documentBody { get; set; }<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ The name of the file to be created<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 [InputArgument(FriendlyName = \"File Name\", Description = \"File Name\")]<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 public string fileName { get; set; }<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #endregion<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #region Methods Overrides<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Override of the Execute method in the base class<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 public override void Execute(ActionContext context)<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 try<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Concatenate the file path and file name<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 filepath = filepath + \"\\\\\" +fileName;<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Create a file stream to write the file data<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 using (FileStream data = File.Create(filepath))<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Convert Base64 document body to byte array<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 byte[] fileBytes = Convert.FromBase64String(documentBody);<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Write the byte array to the file stream<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 data.Write(fileBytes, 0, fileBytes.Length);<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 catch (Exception e)<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Handle exceptions and throw an ActionException<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if (e is ActionException) throw;<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 throw new ActionException(\"ActionError\", e.Message, e.InnerException);<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #endregion<\/em>\r\n\r\n<em>\u00a0\u00a0\u00a0 }<\/em>\r\n\r\n<em>}<\/em><\/pre>\n<p>&nbsp;<\/p>\n<p>Build the project.<\/p>\n<p><strong>Step 2<\/strong>: <strong>Creating and importing a self-signed certificate<\/strong><\/p>\n<p>Open Windows PowerShell.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36831\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/5Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"1116\" height=\"911\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/5Custom-Actions-with-Desktop-Flows.jpeg 1116w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/5Custom-Actions-with-Desktop-Flows-300x245.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/5Custom-Actions-with-Desktop-Flows-1024x836.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/5Custom-Actions-with-Desktop-Flows-768x627.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/5Custom-Actions-with-Desktop-Flows-660x539.jpeg 660w\" sizes=\"(max-width: 1116px) 100vw, 1116px\" \/><\/p>\n<p>Copy and paste the following commands, replacing the underlined names as appropriate.<\/p>\n<pre class=\"lang:css gutter:true start:1\">$certname = \"<u>CustomActionCertificate\"<\/u>\r\n$cert = New-SelfSignedCertificate -CertStoreLocation Cert:\\CurrentUser\\My -Type CodeSigningCert -Subject \"CN=$certname\" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256\r\n\r\n$mypwd = ConvertTo-SecureString -String \"<u>pass@word1\"<\/u> -Force -AsPlainText\r\n\r\nExport-PfxCertificate -Cert $cert -FilePath \"<u>D:\\Task\\Blog\\CustomActionCertificate.pfx<\/u>\" -Password $mypwd<\/pre>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36830\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/6Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"1877\" height=\"929\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/6Custom-Actions-with-Desktop-Flows.jpeg 1877w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/6Custom-Actions-with-Desktop-Flows-300x148.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/6Custom-Actions-with-Desktop-Flows-1024x507.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/6Custom-Actions-with-Desktop-Flows-768x380.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/6Custom-Actions-with-Desktop-Flows-1536x760.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/6Custom-Actions-with-Desktop-Flows-660x327.jpeg 660w\" sizes=\"(max-width: 1877px) 100vw, 1877px\" \/><\/p>\n<p>After generating and exporting the certificate, incorporate it into your trust root. Then, double-click on the exported certificate. Kindly complete all the steps in import vizard.<\/p>\n<p>Click <strong>Next<\/strong><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36829\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/7Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"779\" height=\"770\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/7Custom-Actions-with-Desktop-Flows.jpeg 779w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/7Custom-Actions-with-Desktop-Flows-300x297.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/7Custom-Actions-with-Desktop-Flows-768x759.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/7Custom-Actions-with-Desktop-Flows-660x652.jpeg 660w\" sizes=\"(max-width: 779px) 100vw, 779px\" \/><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36828\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/8Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"782\" height=\"768\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/8Custom-Actions-with-Desktop-Flows.jpeg 782w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/8Custom-Actions-with-Desktop-Flows-300x295.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/8Custom-Actions-with-Desktop-Flows-768x754.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/8Custom-Actions-with-Desktop-Flows-660x648.jpeg 660w\" sizes=\"(max-width: 782px) 100vw, 782px\" \/><\/p>\n<p>Write down the password that was used in the certificate creation command.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36827\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/9Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"788\" height=\"772\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/9Custom-Actions-with-Desktop-Flows.jpeg 788w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/9Custom-Actions-with-Desktop-Flows-300x294.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/9Custom-Actions-with-Desktop-Flows-768x752.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/9Custom-Actions-with-Desktop-Flows-660x647.jpeg 660w\" sizes=\"(max-width: 788px) 100vw, 788px\" \/><\/p>\n<p>In the certificate store, select &#8216;Trusted Root Certification Authorities.&#8217; Then click on &#8216;Next,&#8217; and after that, simply click on &#8216;Finish.&#8217; You will receive a message indicating that the import was successful.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36826\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/10Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"1158\" height=\"767\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/10Custom-Actions-with-Desktop-Flows.jpeg 1158w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/10Custom-Actions-with-Desktop-Flows-300x199.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/10Custom-Actions-with-Desktop-Flows-1024x678.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/10Custom-Actions-with-Desktop-Flows-768x509.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/10Custom-Actions-with-Desktop-Flows-660x437.jpeg 660w\" sizes=\"(max-width: 1158px) 100vw, 1158px\" \/><\/p>\n<p><strong>Step 3:<\/strong> &#8211; Sign the <strong>.dl<\/strong>l file using a trusted certificate by running the following command in a Developer Command Prompt for Visual Studio, replacing names as appropriate.<\/p>\n<p>Signtool sign \/f &#8220;<u>D:\\Task\\Blog\\CustomActionCertificate.pfx<\/u>&#8221; \/p <u>pass@word1<\/u> \/fd SHA256 &#8220;<u>D:\\Task\\Blog\\Modules.CustomActions\\Modules.CustomActions\\bin\\Debug\\net472\\Modules.CustomActions.dll<\/u>&#8221;<\/p>\n<p>Step 4: &#8211; Packaging everything in a cabinet file<\/p>\n<p>The .dll containing the custom actions and all its dependencies (.dll files) must be packaged in a cabinet file (.cab).<\/p>\n<p>Create a Windows PowerShell Script (.ps1) containing the following lines &amp; save it as Script[makeCabFile.ps1].<\/p>\n<pre class=\"lang:css gutter:true start:1\"><em>param(<\/em>\r\n\r\n<em>[ValidateScript({Test-Path $_ -PathType Container})]<\/em>\r\n\r\n<em>[string]<\/em>\r\n\r\n<em>$sourceDir,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/em>\r\n\r\n<em>[ValidateScript({Test-Path $_ -PathType Container})]<\/em>\r\n\r\n<em>[string]<\/em>\r\n\r\n<em>$cabOutputDir,<\/em>\r\n\r\n<em>[string]<\/em>\r\n\r\n<em>$cabFilename<\/em>\r\n\r\n<em>)<\/em>\r\n\r\n<em>$ddf = \".OPTION EXPLICIT<\/em>\r\n\r\n<em>.Set CabinetName1=$cabFilename<\/em>\r\n\r\n<em>.Set DiskDirectory1=$cabOutputDir<\/em>\r\n\r\n<em>.Set CompressionType=LZX<\/em>\r\n\r\n<em>.Set Cabinet=on<\/em>\r\n\r\n<em>.Set Compress=on<\/em>\r\n\r\n<em>.Set CabinetFileCountThreshold=0<\/em>\r\n\r\n<em>.Set FolderFileCountThreshold=0<\/em>\r\n\r\n<em>.Set FolderSizeThreshold=0<\/em>\r\n\r\n<em>.Set MaxCabinetSize=0<\/em>\r\n\r\n<em>.Set MaxDiskFileCount=0<\/em>\r\n\r\n<em>.Set MaxDiskSize=0<\/em>\r\n\r\n<em>\"<\/em>\r\n\r\n<em>$ddfpath = ($env:TEMP + \"\\customModule.ddf\")<\/em>\r\n\r\n<em>$sourceDirLength = $sourceDir.Length;<\/em>\r\n\r\n<em>$ddf += (Get-ChildItem $sourceDir -Filter \"*.dll\" | Where-Object { (!$_.PSIsContainer) -and ($_.Name -ne \"Microsoft.PowerPlatform.PowerAutomate.Desktop.Actions.SDK.dll\") } | Select-Object -ExpandProperty FullName | ForEach-Object { '\"' + $_ + '\" \"' + ($_.Substring($sourceDirLength)) + '\"' }) -join \"`r`n\"<\/em>\r\n\r\n<em>$ddf | Out-File -Encoding UTF8 $ddfpath<\/em>\r\n\r\n<em>makecab.exe \/F $ddfpath<\/em>\r\n\r\n<em>Remove-Item $ddfpath<\/em><\/pre>\n<p><strong>Step 5:<\/strong> &#8211; Use the following command to create a .cab file in PowerShell.<\/p>\n<p>.\\makeCabFile.ps1 &#8220;D:\\Task\\Blog\\Modules.CustomActions\\Modules.CustomActions\\bin\\Debug\\net472&#8221; &#8220;D:\\Task\\Blog&#8221; CustomActions.cab<u><\/u><\/p>\n<p><strong>Step 6:<\/strong> &#8211; The .cab file must also be signed. Use the following command to sign the .cab file in a Developer Command Prompt for Visual Studio, replacing names as appropriate.<\/p>\n<p>Signtool sign \/f &#8220;D:\\Task\\Blog\\CustomActionCertificate.pfx&#8221; \/p pass@word1 \/fd SHA256 &#8220;D:\\Task\\Blog\\CustomActions.cab&#8221;<\/p>\n<p><strong>Step 7:<\/strong> <strong>Upload custom actions<\/strong><\/p>\n<p>Go to Power Automate -&gt; More -&gt; Discover all -&gt; Data -&gt; Custom Action.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36825\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/11Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"1887\" height=\"844\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/11Custom-Actions-with-Desktop-Flows.jpeg 1887w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/11Custom-Actions-with-Desktop-Flows-300x134.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/11Custom-Actions-with-Desktop-Flows-1024x458.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/11Custom-Actions-with-Desktop-Flows-768x344.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/11Custom-Actions-with-Desktop-Flows-1536x687.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/11Custom-Actions-with-Desktop-Flows-660x295.jpeg 660w\" sizes=\"(max-width: 1887px) 100vw, 1887px\" \/><\/p>\n<p>Select &#8216;Upload custom action&#8217; and upload the .cab file. However, note that we can upload .cab files up to 30MB.<\/p>\n<p><strong><img decoding=\"async\" class=\"alignnone size-full wp-image-36824\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/12Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"1907\" height=\"834\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/12Custom-Actions-with-Desktop-Flows.jpeg 1907w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/12Custom-Actions-with-Desktop-Flows-300x131.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/12Custom-Actions-with-Desktop-Flows-1024x448.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/12Custom-Actions-with-Desktop-Flows-768x336.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/12Custom-Actions-with-Desktop-Flows-1536x672.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/12Custom-Actions-with-Desktop-Flows-660x289.jpeg 660w\" sizes=\"(max-width: 1907px) 100vw, 1907px\" \/><\/strong><\/p>\n<p><strong><br \/>\nStep 8:<\/strong> <strong>Use custom actions<br \/>\n<\/strong><br \/>\nYou can include custom actions in the desktop flow through the &#8216;Assets library&#8217; using Power Automate Desktop Designer.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36823\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/13Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"1768\" height=\"245\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/13Custom-Actions-with-Desktop-Flows.jpeg 1768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/13Custom-Actions-with-Desktop-Flows-300x42.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/13Custom-Actions-with-Desktop-Flows-1024x142.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/13Custom-Actions-with-Desktop-Flows-768x106.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/13Custom-Actions-with-Desktop-Flows-1536x213.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/13Custom-Actions-with-Desktop-Flows-660x91.jpeg 660w\" sizes=\"(max-width: 1768px) 100vw, 1768px\" \/><\/p>\n<p>To use the &#8216;Assets library,&#8217; select it in the designer. Alternatively, use the Tools bar.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36822\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/14Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"1723\" height=\"890\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/14Custom-Actions-with-Desktop-Flows.jpeg 1723w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/14Custom-Actions-with-Desktop-Flows-300x155.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/14Custom-Actions-with-Desktop-Flows-1024x529.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/14Custom-Actions-with-Desktop-Flows-768x397.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/14Custom-Actions-with-Desktop-Flows-1536x793.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/14Custom-Actions-with-Desktop-Flows-660x341.jpeg 660w\" sizes=\"(max-width: 1723px) 100vw, 1723px\" \/><\/p>\n<p>In the Assets library, we can see all the custom actions we have uploaded. We can add a custom action, and we can also remove previously added custom actions.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36821\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/15Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"1774\" height=\"983\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/15Custom-Actions-with-Desktop-Flows.jpeg 1774w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/15Custom-Actions-with-Desktop-Flows-300x166.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/15Custom-Actions-with-Desktop-Flows-1024x567.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/15Custom-Actions-with-Desktop-Flows-768x426.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/15Custom-Actions-with-Desktop-Flows-1536x851.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/15Custom-Actions-with-Desktop-Flows-660x366.jpeg 660w\" sizes=\"(max-width: 1774px) 100vw, 1774px\" \/><\/p>\n<p>Now, we can use our custom action.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36820\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/16Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"1834\" height=\"891\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/16Custom-Actions-with-Desktop-Flows.jpeg 1834w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/16Custom-Actions-with-Desktop-Flows-300x146.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/16Custom-Actions-with-Desktop-Flows-1024x497.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/16Custom-Actions-with-Desktop-Flows-768x373.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/16Custom-Actions-with-Desktop-Flows-1536x746.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/16Custom-Actions-with-Desktop-Flows-660x321.jpeg 660w\" sizes=\"(max-width: 1834px) 100vw, 1834px\" \/><\/p>\n<p>Double-click on the custom action to add it.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36819\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/17Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"908\" height=\"588\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/17Custom-Actions-with-Desktop-Flows.jpeg 908w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/17Custom-Actions-with-Desktop-Flows-300x194.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/17Custom-Actions-with-Desktop-Flows-768x497.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/17Custom-Actions-with-Desktop-Flows-660x427.jpeg 660w\" sizes=\"(max-width: 908px) 100vw, 908px\" \/><\/p>\n<p>Here, <strong>documentBody<\/strong> and <strong>FileName<\/strong> are variables taking input from the cloud flow. Choose the file path where you want to store the downloaded attachment or notes.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36818\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/18Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"1548\" height=\"955\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/18Custom-Actions-with-Desktop-Flows.jpeg 1548w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/18Custom-Actions-with-Desktop-Flows-300x185.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/18Custom-Actions-with-Desktop-Flows-1024x632.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/18Custom-Actions-with-Desktop-Flows-768x474.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/18Custom-Actions-with-Desktop-Flows-1536x948.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/18Custom-Actions-with-Desktop-Flows-660x407.jpeg 660w\" sizes=\"(max-width: 1548px) 100vw, 1548px\" \/><\/p>\n<p>We created an automated cloud flow that triggers when a file is added to notes. Then, we check if the document is present or not in a condition. If the document is present, we call a desktop flow, select the run mode, and pass documentBody and fileName.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36817\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/19Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"1026\" height=\"772\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/19Custom-Actions-with-Desktop-Flows.jpeg 1026w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/19Custom-Actions-with-Desktop-Flows-300x226.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/19Custom-Actions-with-Desktop-Flows-1024x770.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/19Custom-Actions-with-Desktop-Flows-768x578.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/19Custom-Actions-with-Desktop-Flows-660x497.jpeg 660w\" sizes=\"(max-width: 1026px) 100vw, 1026px\" \/><\/p>\n<p>Here, I am adding a docx file to the note.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-36816\" style=\"border: 1px solid #0a0a0a; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/20Custom-Actions-with-Desktop-Flows.jpeg\" alt=\"Custom Actions with Desktop Flows\" width=\"1665\" height=\"464\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/20Custom-Actions-with-Desktop-Flows.jpeg 1665w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/20Custom-Actions-with-Desktop-Flows-300x84.jpeg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/20Custom-Actions-with-Desktop-Flows-1024x285.jpeg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/20Custom-Actions-with-Desktop-Flows-768x214.jpeg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/20Custom-Actions-with-Desktop-Flows-1536x428.jpeg 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/12\/20Custom-Actions-with-Desktop-Flows-660x184.jpeg 660w\" sizes=\"(max-width: 1665px) 100vw, 1665px\" \/><\/p>\n<p>Finally, the file is downloaded or stored in my selected path automatically<\/p>\n<h2><strong>Conclusion<\/strong><\/h2>\n<p>Thus, we learned how to utilize the custom actions with the Power Automate Desktop Flows<\/p>\n<p><a href=\"https:\/\/bit.ly\/3vaUl2p\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"alignnone wp-image-36464\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/11\/Discover-How-Inogics-Power-Platform-Services-Can-Help-You-Harness-the-Power-of-Low-Code-with-Microsoft-Power-Platform.-1.png\" alt=\"Microsoft Power Platform\" width=\"1204\" height=\"344\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/11\/Discover-How-Inogics-Power-Platform-Services-Can-Help-You-Harness-the-Power-of-Low-Code-with-Microsoft-Power-Platform.-1.png 700w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/11\/Discover-How-Inogics-Power-Platform-Services-Can-Help-You-Harness-the-Power-of-Low-Code-with-Microsoft-Power-Platform.-1-300x86.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2023\/11\/Discover-How-Inogics-Power-Platform-Services-Can-Help-You-Harness-the-Power-of-Low-Code-with-Microsoft-Power-Platform.-1-660x189.png 660w\" sizes=\"(max-width: 1204px) 100vw, 1204px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:css gutter:true start:1\"><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Introduction A custom action in desktop flow is a feature designed to automate repetitive tasks seamlessly. This blog provides a comprehensive guide on designing and leveraging custom actions in the desktop version of Power Automate flows. The journey starts with a step-by-step procedure to create these custom actions, offering a detailed walkthrough of the process\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.inogic.com\/blog\/2023\/12\/custom-actions-with-power-automate-desktop-flows\/\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1913,44],"tags":[1975],"class_list":["post-36814","post","type-post","status-publish","format-standard","hentry","category-microsoft-power-platform-services","category-power-apps","tag-power-automate"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/36814","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/comments?post=36814"}],"version-history":[{"count":0,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/36814\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/media?parent=36814"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/categories?post=36814"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/tags?post=36814"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}