Power Automate Connector Setup for Integrating with Dynamics 365
Overview
Integrating Dynamics 365 with Ironclad using Microsoft Power Automate
Overview In a typical sales scenario, account executives rely heavily on
Dynamics 365 to manage their customer relationships and associated
agreements. By leveraging Power Automate or Dataverse Accelerator, these
account executives can seamlessly initiate new contract workflows
directly from their familiar Dynamics 365 interface, eliminating the
need to switch between platforms or manually transfer data. In this
example, When creating a new agreement record in Dynamics 365, an MSA
Workflow can automatically be triggered in Ironclad, pre-populating key
information such as customer details, agreement terms, and stakeholder
information from any table. As the contract progresses through various
stages in Ironclad - from initial draft to final execution - real-time
status updates are automatically reflected back in the Dynamics 365
agreement record, keeping the account executive informed without
requiring them to leave their primary workspace. Once the MSA is fully
executed, the signed document is accessible directly through Dynamics
365, creating a streamlined end-to-end contract management experience
that enhances productivity and ensures data consistency across both
systems.
Power Automate is a cloud-based service within the Microsoft Power Platform that enables organizations to create and automate processes across multiple applications and services without extensive coding knowledge. As a low-code/no-code solution, Power Automate empowers business users and IT professionals to design complex integration scenarios that connect diverse systems like Dynamics 365 and Ironclad through pre-built connectors and custom workflow actions.
The Ironclad Power Automate Connector is an open-source solution developed by an Ironclad partner that bridges apps built in the Microsoft Power Apps platform and Ironclad's Contract Lifecycle Management (CLM) platform. The connector must be manually uploaded to your Power Platform environment as a custom connector in Power Platform, this Ironclad Partner-developed connector provides configurable access to Ironclad's public APIs within the Power Automate environment without needing custom code. While not an official Ironclad product, the connector offers Ironclad customers a practical solution for creating a seamless contract management experience between Ironclad and the Microsoft ecosystem of business platforms.
Please note that the approach outlined in this guide is only meant to demonstrate an example solution for building an integration with Ironclad, but it is a custom integration and some knowledge of Power Automate is required for the configuration of this connector. To view a list of out-of-the-box connectors that Ironclad supports, check out our Help Center.
This connector can enable teams to initiate contract workflows directly from Dynamics 365 records, automatically populating agreements with relevant customer and deal information. When working with NDAs, MSAs, SOWs, or other legal documents, users can stay within their familiar Dynamics 365 environment while leveraging Ironclad's powerful contract automation capabilities. The connector can be configured to ensure that all approval stages are logged and synchronized between systems, maintaining a clear audit trail and providing real-time visibility into contract status.
This guide walks through downloading the connector from Github and configuring it in Power Automate, and provides detailed instructions for common integration scenarios. You'll learn how to initiate Ironclad workflows from Dynamics 365 records, synchronize approval statuses between systems, and access executed agreements within Dynamics 365. Each section includes step-by-step instructions and best practices to help you configure the integration according to your organization's specific needs.
If you need alternative integration paths, you can use Ironclad's public APIs (https://developer.ironcladapp.com/reference/getting-started-api) with any system that supports RESTful APIs and our authentication modes. Ironclad also has middleware partners that provide supported Ironclad Connectors in their platforms (e.g. Tray.io, Zapier).
Prerequisites
Prerequisites Ironclad CLM 1. API Access: Your Ironclad environment will need to have API access enabled, since the Power Automate connector makes use of the Ironclad public APIs to enable the integration.
- Authentication: Ironclad uses the OAuth 2.0 Authorization Framework to authenticate API requests. In order to allow your Power Automate flows to access the Ironclad API, you'll need to configure an OAuth client application for them. See the following documentation to Register your OAuth client application. (Set the Redirect URI to: https://global.consent.azure-apim.net/redirect/ironcladclm For OAuth Scopes, select the ones that match your intended API endpoints. If you're uncertain which scopes you need, you can include all available OAuth Scopes to ensure full access.) Important: Select Authorization Code for the Grant Type 3. Ironclad User Account: Several of the solution patterns require specifying an Ironclad user for actions (e.g., who is approving, who is commenting, etc.). Creating a generic Ironclad user account that your integration can use to register actions is recommended for consistency and simplicity. 4. Ironclad Workflow(s): Workflows will need to have been created in your Ironclad instance in order to test your Power Automate connector. Please review the Workflow Designer Step-by-step instructions for general instructions on using the Workflow Designer in Ironclad. The details required for the workflow used by our example are spelled out in the section Basic Setup below . 5. Reference Documentation: Please see Ironclad's API Reference documentation for the most up-to-date details on our endpoints. For information on building workflows in Ironclad, please see Ironclad Academy for guided training and Ironclad Support Center for product articles.
Power Automate To create an integration you will need to use the Ironclad Power Automate Connector, and native Microsoft connectors such as Dataverse Connectors. Here is a list of prerequisites:
- Microsoft Account: You will need a Microsoft account to sign in to
Power Automate.
Access to Power Automate is part of your Office 365 or Microsoft subscription. - PowerAutomate or PowerApps Premium License: The use of this custom connector required the implementing user to have an adequate premium license.
- Environment Maker Role: Required to create and manage custom connectors.
- Admin Approval: May be needed for custom connector deployment.
- Data-Loss-Prevention Policy: Your policy needs to be configured to allow the Ironclad Connector in the same connector category as any other connector you will use in conjunction with it. By default, the connector will be in the "Non-Business" category.
- Visit Microsoft's Power Automate learning center for various resources related to connectors, flows, and other components we leverage in this guide. Developer Tools
- Visual Studio Code: Download and install from https://code.visualstudio.com/
- Power Platform CLI: Install the Power Platform CLI tools
- Git: For cloning the repository
Uploading the Custom Connector to Power Automate
Shell Shell Uploading the Custom Connector to Power Automate Step 1: Download the Connector from GitHub 1. Open your terminal or command prompt 2. Clone the repository: bash git clone https://github.com/maxhenkentech/MSPP-IroncladCLM.git 3. Navigate to the cloned directory: bash cd MSPP-IroncladCLM
Step 2: Open in Visual Studio Code 1. Launch Visual Studio Code 2. Open the cloned repository folder 3. Ensure all required extensions are installed (VS Code will prompt you if any are missing) Step 3: Upload the Connector to Power Platform 3.1 Authenticate with Power Platform 1. Open the terminal in VS Code (View → Terminal) 2. Run the authentication command:
Shell Shell bash paconn login 3. This will provide a URL and authentication code 4. Copy the URL and open it in your browser 5. Enter the provided code when prompted 6. Sign in with your Microsoft account that has access to Power Automate 3.2 Upload the Connector 1. In the VS Code terminal, run the upload script: bash paconn create --api-prop apiProperties.json --api-def apiDefinition.swagger.json --icon icon. png --scrip script.csx --secret dummy Note: Replace [YOUR-ENVIRONMENT-ID] with your actual environment ID, or omit the environment parameter to be prompted for selection 2. If prompted, select your Power Platform environment from the list 3. The upload process will take approximately 30-60 seconds 4. Wait for the confirmation message that the connector has been successfully uploaded
Step 4: Configure the Custom Connector in Power Automate CRITICAL: Follow these steps exactly as described. The configuration is sensitive and incorrect settings will break the connector. 4.1 Navigate to Custom Connectors 1. Log into Power Automate 2. In the left navigation, expand "Data" and select "Custom connectors" 3. You should see "IroncladCLM" in the list of custom connectors 4.2 Edit the Connector Security Settings 1. Click on the IroncladCLM connector 2. Click the "Edit" button (pencil icon) 3. IMPORTANT: Do not modify anything on the General tab 4. Navigate to the "2. Security" tab 5. In the Authentication type dropdown, ensure "OAuth 2.0" is selected 6. IMPORTANT: Do not modify anything on OAuth 2.0 tab. It will resemble screen below:
- Copy the Redirect URL shown in the connector configuration (it will look like: https://global.consent.azure-apim.net/redirect/ironcladclm)
Creating a Connection in Power Automate
4.3 Update Ironclad OAuth Configuration with the Redirect URL 1. Return to Ironclad (Company Settings → API) 2. Edit your OAuth application 3. Paste the Redirect URL you copied from Power Automate 4. Ensure the application is Active 5. Save the OAuth application 6. Copy the Client ID and Client Secret from Ironclad 4.4 Complete Power Automate Connector Configuration 1. Return to the Power Automate custom connector configuration 2. CRITICAL: Do NOT click "Update connector"
- Instead, click the back arrow to exit without saving Step 5: Create a Connection in Power Automate 5.1 Test the Connector with a New Flow 1. Navigate to "My flows" in Power Automate 2. Click "New flow" → "Automated cloud flow" 3. Give your flow a test name 4. For the trigger, search for "Ironclad" 5. Select any IroncladCLM trigger (e.g., "When a workflow is created") 5.2 Authenticate the Connection 1. When prompted to create a connection, click "Sign in" 2. Provide a connection name (e.g., "IroncladProduction") 3. Enter your Ironclad instance URL (e.g., "https://demo.ironcladapp.com") 4. Enter the Client ID from your Ironclad OAuth app 5. Enter the Client Secret from your Ironclad OAuth app 6. Leave Version as "default" 7. Click "Sign in" 8. You'll be redirected to Ironclad to authenticate 9. Log in with your Ironclad credentials 10. Click "Allow access" when prompted 11. You should be redirected back to Power Automate with a successful connection
Verifying the Connection
Step 6: Verify the Connection 1. The connection should now appear in your list of connections 2. Test the connection by: ○ Creating a simple flow using an Ironclad trigger ○ Running a test to ensure data is retrieved successfully ○ Checking that available actions populate correctly
Troubleshooting Common Issues and Solutions Issue: "Unauthorized" error when creating connection ● Solution: Verify Client ID and Secret are correct and the OAuth app is active in Ironclad Issue: Redirect URL mismatch error ● Solution: Ensure the Redirect URL in Ironclad exactly matches the one from Power Automate (including https://) Issue: No scopes available ● Solution: Check that OAuth scopes are properly configured in your Ironclad OAuth application Issue: Connector upload fails ● Solution: ○ Verify you have the correct permissions in Power Platform ○ Ensure you're authenticated with paconn login ○ Check that your environment allows custom connectors Issue: Cannot see the custom connector after upload ● Solution: ○ Refresh the Power Automate page ○ Check you're in the correct environment ○ Verify the upload completed successfully in VS Code
Dynamics 365 Overview
Once your connector is successfully configured and tested, you can proceed with: 1. Creating automated flows between Dynamics 365 and Ironclad 2. Setting up workflow triggers and actions 3. Implementing the integration patterns described in this document Remember to test thoroughly in a non-production environment before deploying to production.
NOTE: Both Ironclad and Microsoft Power Automate have the concept of
"workflows". In the case of Ironclad, a workflow defines a contracting
process for a particular type of agreement, while in Power Automate a
workflow is a flow of actions that are taken in various integration
scenarios (triggered by events, or run periodically on a schedule). In
the guide that follows we will be clear about which type of workflow we
are referencing as we describe the steps in configuring this solution.
Whenever possible we will refer to Ironclad workflows as "workflows" and
Power Automate workflows as "flows" for clarity. Dynamics 365
We assume that you are familiar with the basics of Dynamics 365
concepts, such as entities, forms and views. Although the connector can
be used to integrate with any Dynamics module and even custom
Model-Driven Apps, our guide assumes that the MS Dynamic Sales app is in
use, with the standard Opportunity and Account tables that exist there.
You will need a login that has appropriate privileges to create and
update records in these tables, as well as the custom Agreement table
that we create as part of this guide.
Basic Setup There are a few details you'll need to configure in Ironclad
and Dynamics 365 before configuring the actual integration flows using the
Ironclad Power Automate Connector.
Microsoft Dataverse connectors will be used to connect Dynamics 365 to
Power Automate. Dynamics 365 Setup As mentioned in the Prerequisites
section, we are assuming that MS Dynamics Sales is in use. To
effectively support all examples in this guide, you will need to create
three tables:
- Agreement Table: Our integration makes use of a custom table called Agreement, that represents an agreement to be made with an Account in general (such as an NDA or MSA) or connected to a specific Opportunity (such as an Order Form). We do this simply to demonstrate a particular solution approach that could be taken within MS Dynamics Sales - you can of course use any Dataverse tables in your environment to trigger Ironclad workflows if necessary.\
- Workflow Table: This table will contain workflow IDs from Ironclad, which is needed for managing documents. While specifically designed for this example, this table can be reused for other workflows involving interactions between Ironclad and Dynamics
-
- Workflow Documents Table: This table will be dedicated to storing
document files.
Maintaining a separate table for files is considered good practice as it promotes better data organization, improves integrity, and simplifies data retrieval and management.
Create the new Agreement table by going to the Power Apps app in your Dynamics environment, and navigate to Dataverse -> Tables. Create a new table and name it Agreement, and make sure to check the "Enable Attachments" option, since we will be adding notes to the Agreement to log approvals and also to attach the final contract document.
Agreement Table Setup
Add the following columns to the Agreement table (in addition to the standard columns that Dynamics creates automatically):
Column name Type Notes Account Lookup Set this as a lookup to the Account table, for agreements that are directly related to the account (such as NDAs). Opportunity Lookup Set this as a lookup to the Opportunity table, for agreements that are related to specific opportunities with an account (such as Order Forms). Agreement Number Autonumber Use any format you'd like for the auto-number sequence. We will send this to Ironclad to store on the workflow once it is launched. Agreement Start Date Date only
Agreement Type Choice Add any choices you'd like, but ensure that one of
the choices is "MSA". Our launch flow will be triggered when an agreement
with this type is created.
Agreement Value Currency
Counterparty Signer Email Email
Counterparty Signer Name Single line of text
Ironclad Workflow URL We will store a link to the Ironclad workflow here after it is launched. Ironclad Workflow Status Single line of text
You should also update the default Form for the Agreement table, and add the Agreement table to your preferred Sales app in Dynamics so that you can easily create new Agreement records and see their status. Our example flows will also be using notes attached to the Agreement to show updates to the Ironclad workflow, so you should also add a Timeline component to the form so that those updates can be seen. As an example, the screen below shows a default form defined for the new Agreement table in Dynamics:
Create the new workflow table by going to the Power Apps app in your Dynamics environment, and navigate to Dataverse -> Tables. Create a new table and name it Workflow.
Add the following columns to the Workflow table (in addition to the standard columns that Dynamics creates automatically):
Column name Type Notes Name Single line of text
Ironclad ID Single line of text This column will be populated with the Ironclad Id workflow properties. Agreement Lookup Set this as a lookup to the Agreement Table. Workflow Unique identifier Establishes distinct identifier for relationship with Workflow Documents Table.
Workflow Table Setup
You should also add a New relationship for the Agreement Column in the Workflow table to have a many to one relationship with the Agreement Column in the Agreement Table. The image below shows the default form fields for the Workflow table.
Create the new workflow document table by going to the Power Apps app in your Dynamics environment, and navigate to Dataverse -> Tables. Create a new table and name it Workflow Document.
Add the following columns to the Workflow Document table (in addition to the standard columns that Dynamics creates automatically):
Column name Type Notes Name Single line of text
Unique Key Single line of text Distinct identifier for each document Ironclad document File File Used for the document file Workflow Lookup
Workflow Document Unique identifier Establishes distinct identifier for relationship with Workflow table
Workflow Document Table Setup
You should also add a New relationship for the Workflow Column in the
Workflow Document table to have a many to one relationship with the
Workflow Column in the Workflow Table.
The image below shows the default form fields for the Workflow Documents
table.
Ironclad Setup
Ironclad Setup You'll need an appropriate contract workflow defined in Ironclad. Our example uses an Order Form use case, but the only details we depend on here are some of the standard fields that exist on almost all Ironclad workflows (Agreement Date, Counterparty Signer Email, Counterparty Signer Name), as well as the following custom attributes that you will need to add to the workflow:
Attribute Attribute ID Type Notes Dynamics MSA ID dynamicsMsaId Text This will be used to store the ID of the Dynamics Agreement record that triggered the workflow launch. Dynamics MSA Number dynamicsMsaNumber Text This will store the human-readable Agreement Number of the Agreement that triggered the workflow. Total Contract Value totalContractValue Monetary This will store the Agreement Value from the Agreement in Dynamics. Product Line Items productLineItems Table This table will store the Opportunity Product line items from the Opportunity in Dynamics. The columns in the table are described in the rows below. - Product Name productName String (Table Column) This table column will store the product name from the product line item. - Product Quantity productQuantity Number (Table Column) This table column will store the quantity from the product line item. - Product Unit Price productUnitPrice Monetary (Table Column) This table column will store unit price from the product line item. - Product Line Total Price productLineTotalPrice Monetary (Table Column) This table column will store the total price from the product line item.
Updated 14 minutes ago
