Change Summary
Release Date | Release Version | Change Description | Link |
|---|---|---|---|
April 20th, 2026 | 2026.1.1 | Adding DocuSign configuration to store credentials in AKV | |
April 13th, 2026 | 2026.1 | Import TechnoMile Custom Connectors Solution with Azure Key Vault | Import TechnoMile Custom Connectors Solution with Azure Key Vault |
April 13th, 2026 | 2026.1 | Configure Key Vault Integrator Custom Connector | |
April 13th, 2026 | 2026.1 | Alternate method to access Product Configurations from Power Apps |
Overview
This document outlines the standardized approach for creating Secrets in Azure Key Vault using pre-defined Product Configuration records. Each configuration corresponds to a specific product/feature set up and uses a consistent JSON template to ensure secure and uniform integration with external systems. TechnoMile maintains a set of Product Configuration records in the system. These records define parameters required for secure communication with external services.
TechnoMile’s Contracts Suite solution helps Government Contractors manage the entire Contract Lifecycle initiating from pre-award to post-award through a user-friendly set up and administration tasks. The Contracts Suite solution is built on a highly flexible and scalable Microsoft Dynamics platform where users can easily configure and manage Contract and Subcontract processes.
This guide takes you through the installation and configuration steps for the Contracts Suite app.
Audience
Microsoft Dynamics Administrators
IT Support
Prerequisites
Ensure that TechnoMile's Contracts Suite is already installed and configured. The version of this package must be 2026.1 or higher.
Retrieve Azure/Entra application details such as Client ID, Client Secret, and Tenant ID.
Retrieve the name of your Azure Key Vault.
Recommendation
It is advisable to maintain separate Azure Key Vaults for each instance in order to segregate configurations for different environments (for example, Development, UAT, or Production).
Import TechnoMile Custom Connectors Solution with Azure Key Vault
It is recommended to install all packages in a Sandbox/Test environment for testing, prior to their installation in your Production environment. Please contact TechnoMile Support or email support@technomile.com for separate installation packages for your Sandbox/Test environment.
IMPORTANT:
Check all Power Automate Flows to ensure that they are turned ON. If a Power Automate Flow is not ON, select Edit for the flow, create its Connections, and turn it ON.
Login to your Microsoft Dynamics instance.
Go to Solutions and click Import solution.
Click Browse to locate and select the TechnoMile Custom Connectors installation package that you received from TechnoMile, which is saved on your system and click Next.
Click Import.
The following message displays Solution “TechnoMile Custom Connectors” imported successfully and the installed TechnoMile Custom Connectors package displays on the Managed tab of the Solutions page.Go to the Managed tab and click to open TechnoMile Custom Connectors.
Configure Key Vault Integrator Custom Connector
Go to Custom connectors and click to open Key Vault Integrator.
Click Edit.
On General, choose Scheme as HTTPS and enter Host as Vault URI.
IMPORTANT:
Ensure that you have retrieved the required Vault URI from your System/Power Platform Administrator.
Alternatively, you can perform the following steps to retrieve Vault URI:Search for and click Key vaults.
Open Key Vault Power Auto Test.
NOTE:
The name of the Key Vault may vary across instances or clients.
Copy the Vault URI after https://.
Post entering the Vault URI in the Host field, click Security.
Click Edit.
Select Authentication type as OAuth 2.0 and Identity Provider as Azure Active Directory.
Select the Enable Service Principal support checkbox.
Enter your Client ID, Client Secret, and Tenant ID.
IMPORTANT:
Ensure that you have retrieved the required Client ID, Client Secret, and Tenant ID from your System/Power Platform Administrator.
Enter Authorization URL as https://login.microsoftonline.com
IMPORTANT:
For GCCH customers, Authorization URL will be https://login.microsoftonline.us
Enter both Resource URL and Scope as the previously copied Vault URI and click Update connector.
IMPORTANT:
At the end of the Vault URI in the Scope field enter text .default
For GCCH customers, Vault URI in the Resource URL field will be https://<key-vault-name>.vault.usgovcloudapi.net/
Go to Test and click New connection.
Select Service Principal Connection, enter Client ID, Client Secret, and Tenant,and click Create connection.
IMPORTANT:
Ensure that you have retrieved the required Client ID, Client Secret, and Tenant from your System/Power Platform Administrator.
Connection is created.
13. Enter a Key Vault secret-name such as AzureApplicationCredentials and click Test operation.
Similarly, perform Test operation steps on all the remaining Key Vault secret-names listed below:
ClauseLibraryAPI
Docusign
TransformCopilotWidget
WageDetermination
Go back to Security and scroll down to copy Redirect URL.
Go back to https://portal.azure.com/
Enter your Client ID in the search bar and click the related Application in search results.
Go to Authentication and click Add Redirect URI on the Redirect URI configuration tab.
Click Web.
Enter the previously copied Redirect URL in the Redirect URI field and click Configure.
A success message displays.
Access Product Configurations from Advanced Settings
IMPORTANT:
Alternatively, if you are unable to access Advanced Find from the navigation shown below, then perform the steps as shown in this section to go to Product Configurations using Power Apps.
Click the gear icon and select Advanced settings.
Click the funnel icon to access Advanced Find.
Select Product Configurations and click Results.
A list of all Product Configurations displays.
Edit Product Configurations
Open Key Vault Enabled.
Ensure that Value is set to true and click Save.
Similarly, open Azure Application Credentials.
IMPORTANT:
Note that this configuration is instance-specific and must be confirmed by the client prior to set up. It must also be verified in the Azure portal prior to proceeding.
Ensure that Contains Secret is set to Yes.
Verify that the JSON Value field is blank and click Save.
Similarly, open Clause Library API.
Ensure that Contains Secret is set to Yes.
Verify that the JSON Value field is blank and click Save.
Similarly, open Docusign.
Ensure that Contains Secret is set to Yes.
Verify that the JSON Value field is blank and click Save.
Similarly, open Transform Copilot Widget.
Ensure that Contains Secret is set to Yes.
Verify that the JSON Value field is blank and click Save.
Similarly, open Wage Determination.
Ensure that Contains Secret is set to Yes.
Verify that the JSON Value field is blank and click Save.
Access Product Configurations from Power Apps
Click Environment and select an Environment of your choice.
Go to Tables and search for and click Product Configuration in search results.
Scroll down to Product Configuration columns and data and click +more.
Select the Contains Secret, JSON Value, and Value columns and click Save.
List of all Product Configurations with selected columns and data displays. Note that you can edit data of any column directly from the table for a particular Product Configuration.
Scroll down to the following Product Configurations and edit each of these for the fields/values mentioned in the Edit Product Configurations section.
Key Vault Enabled
Azure Application Credentials
Clause Library API
Docusign
Transform Copilot Widget
Wage Determination
Key Vault Configurations
IMPORTANT:
Prior to adding Secrets into your Key Vault, ensure that the Product Configurations mentioned in the previous topic are verified by TechnoMile, as these are typically both client and instance specific.
Search for and click Key vaults.
Open Key Vault Power Auto Test.
NOTE:
Currently, Secrets are added to the Key Vault named Key Vault Power Auto Test. Note that the name of the Key Vault may vary across instances or clients. However, ensure that the Secret names are maintained exactly as listed below:
AzureApplicationCredentials
ClauseLibraryAPI
Docusign
TransformCopilotWidget
WageDetermination
Expand Objects, click Secrets, and verify that the Secrets are present.
IMPORTANT:
Ensure that all the above Secrets are created and their Status is set to Enabled.
If any of these Secrets are missing (for example, AzureApplicationCredentials), create them using the same naming convention as listed above.
Open AzureApplicationCredentials.
Open Current Version.
Scroll down and click Show Secret Value.
Paste the following syntax into the Secret value field, if this field is blank or its data is changed.
NOTE:
For GCCH customers, MS Token Base URL will be login.microsoftonline.us and Graph URL will be https://graph.microsoft.us
{ "Azure_TenantId":"********************", "Azure_ClientSecret":"*********************", "Azure_ClientId":"****************************", "MS_TokenBaseURL":"login.microsoftonline.com", "Graph_URL":"https://graph.microsoft.com" }Open ClauseLibraryAPI.
Open Current Version.
Scroll down and click Show Secret Value.
Paste the following syntax into the Secret value field, if this field is blank or its data is changed.
{ "username": "********", "password": "*********", "base_url": "*******", "token_url": "/oauth/token", "clause_type_url": "/clauselib/v1/clauses" }Open Docusign.
Open Current Version.
Scroll down and click Show Secret Value.
Paste the following syntax into the Secret value field, if this field is blank or its data is changed.
{ "BaseURL": "*******", UserID":"***********", "AccountId":"***********", "IntegrationKey":"***********", "Audience":"***********", "PrivateKey":"-----BEGIN RSA PRIVATE KEY----- "MIIEpAIBAAKCAQEAuAHNvTb9s0g4HkejH+CSCSYgDTjplnBngWFFxXIVNeGGfix9 ReP6PPjTgWQWy9doZgUYneNDBZTxvWSLbvDRW0QKlXN3hmDM6/sG3Z84e9CNkqef +Uo1x+ndDf/gEtQlajCtk1rYOidDQSZeY5iqhzdbX7yNYob9rvGI3+H2xLpVT6gO CHJX37nUbASKPLEj2VCbsGvEUW+y3DS1hparqyBUQ+BfAbXNajGmBfC9gQI0/Csn BOwGTAs5F4Cd0rVmC4JvHUt+qpCJmq0kJ9q2Ew3yh8BCpsPlHjbgvM58vROA5KuT /jS+J29xes7LpG1z3XMYBeXzoTqKIeGS1GATBwIDAQABAoIBAAU1q90JEwrB5zDY R2KOKaRPq4WkUFy9hvivR9nsvnP9lCC7YrqZV0rloptduZWA3khRKZ7CwfGFA4kg sR/teofyd7g+gipQUEz4GPwqV1+OCowV6d4Vf0tPMD6GuZHe5sZIZYmv/0I6PVm5 W9/HAUD9zLz7qicZelI7LWxlSebM8VwWaISFI6u9TaAwQyjSFwnJX4BXqZDDyO1x HJkCmNZNLSTnTWnWwB5n8D6xu6wEwK5NyyvwYJ4f/G0Ov0hjIxXgpnIuc5SUGkvJ A+g3K1o+ulrZBoRYWcYODL3CfhLOlvSaBdk/nLdy/F1bjT1xuZNW0HpRq8KMIAvw 0MFi+p0CgYEA9tm7uO/WRu8HaJ/EJXb+EiMdbaguIUaHHEwIwXOSssauoY7HGMVn 0YKDbqa2j7P1saukfZ5w7MAvMFAegWMuSThAQCkk8+InelLMO7yRAzki8WItBxk2 kD9g5uY0z4Ec3fGdGfLMmWvm+dqU407bCxhoD7b0D9RQKIF/GPw/IVUCgYEAvtPG CB6omE3ClPuFZhJOcNuZ/tE85Akitxemq7Fx9DcneosYQ803tT5iuhQbSuCmmI3J lGWlcr4QzNNc0kJasMtK9/8iF0ygrZ1gOduDtHMe3eKtU8jCOdd6maG56lAVkvza 89VCe6Tg3JI75QYJv7/0FgSPO0+oAXQdq/fCkusCgYEAqNVS57JiRDHIR26+oUE5 lP4fapjUtD2gu2Hluypo842gcy9MTUz3LPyvGEc+JhtXuCVFZAWyBruLiufBdY14 YuvuRfPeKlBL4AYxWconBKVXmPElCu3bu90dUc+x3xrXu5U9djnyZhy+5bTykGWm u3f99IGVfB4ilRG89EHSi+ECgYAM8JdRHaMZEMzNBXE6RquDA6Eholaar/Pmrnfi 1JmBkevfZ2cx0cyhQaW4MHzZSvqBBbxRj8L0UOcavIpix5UWv/JJdsd9BPkwTKel xLjdl6DUMvbF46sn+PCbUlglB2EvIm5GcoOblsaYrmHZWdt3YTDP/WcpAnHGB3Wr n5VWGQKBgQCL4Ts5g4f3Hx9FOT8cqFWIFJVKbIOJEwpUXLDWqCj/oVyq0kZKABv4 zafARRppcq1Q1YGsaN1lE/0427n7PPp0Ijk26x3TU2VmRSjHXiVMreuVO9yrjMqg eutHUJq/JKdF1JxYzdp0rfLULjU70XYT3sB2N+ICN9WHA7nwOvHkyw== -----END RSA PRIVATE KEY-----"}Open TransformCopilotWidget.
Open Current Version.
Scroll down and click Show Secret Value.
Paste the following syntax into the Secret value field, if this field is blank or its data is changed.
{ "BaseURL": "*******", "Api_ClientId": "********", "Api_ClientSecret": "********", "Widget_InstanceName": "*******", "Widget_ClientId": "********", "Widget_ClientEmail": "**********************", "Widget_ClientSecret": "***************", "Widget_TokenUrl": "/o/oauth2/token", "Register_Token": "/o/provisioning/register-token", "widget_Url": "/web/guest/mediator?widget=true&consumer=ms×tamp=","MS_TokenBaseURL": "login.microsoftonline.com" }Open WageDetermination.
Open Current Version.
Scroll down and click Show Secret Value.
Paste the following syntax into the Secret value field, if this field is blank or its data is changed.
{ "client_id": "***************", "client_secret": "*********", "baseUrl": "***************", "searchUrl": "/wdol/v1/search", "tokenUrl": "/oauth2/token", "stateUrl": "/census/us/states", "countyUrl": "/counties" }
