Streamlining Azure Marketplace Deployments
Streamlining Azure Marketplace Deployments
Navigating the complexity of deploying solutions to the Azure Marketplace is a common challenge faced by many of our partners at Microsoft. Recognizing this, our Global Partner Services team has developed a powerful tool to simplify this process: the Commercial Marketplace Offer Deployment Manager, or MODM.
Introducing MODM
MODM is a dedicated, first-party installer designed to streamline the deployment of intricate solutions in the Azure Marketplace. It is especially crafted to support deployments using HashiCorp's Terraform and Azure Bicep, enhancing the versatility and efficiency of the deployment process.
How MODM Simplifies Deployment
The deployment process with MODM is straightforward, involving two main steps:
Step 1: Create Your Application Package
The initial phase involves packaging your solution into an application package using the Azure CLI Partnercenter Extension. MODM accommodates two types of solutions for packaging:
1. HashiCorp's Terraform: This popular open-source infrastructure as code tool is now seamlessly supported for Azure Marketplace deployments. Previously, Terraform-based solutions needed conversion to Azure Resource Manager templates, a process that demanded significant development and testing efforts. MODM eliminates this requirement.
2. Azure Bicep: Azure Bicep offers a more readable and concise syntax compared to the JSON of Azure Resource Manager templates. With MODM, converting your Azure Bicep templates to ARM templates is a thing of the past.
Both Terraform and Bicep solutions require minimal prerequisites to be compatible with MODM. Place your solution in a directory with a main entry point file (main.tf for Terraform, main.bicep for Bicep), install the Azure CLI extension for Partnercenter, and execute a single command to create an application package ready for Azure Marketplace.
Simply execute:
az partnercenter marketplace offer package build --id simpleterraform --src $src_dir --package-type AppInstaller
Step 2: Publish Your Application Package
Publishing your application package follows the same protocol as any other Marketplace solution. Utilize the Azure CLI Extension for Partnercenter or the Partnercenter Portal for this purpose.
Post-Deployment: Installing Your Published Package
Installing a marketplace offer deployed with MODM is as straightforward as installing any other managed app. A unique aspect of MODM is the inclusion of a user-friendly front-end experience that allows you to monitor the installation progress and troubleshoot any issues that arise. Detailed documentation and a helpful video tutorial on this process are available for further guidance.
MODM's Architecture Overview
MODM's architecture is anchored by the App Installer, a virtual machine that plays a pivotal role in the deployment process. This component takes the packaged app.zip from the Partnercenter CLI command and oversees the installation, managing aspects like retries and machine restarts. A detailed breakdown of MODM's architecture is available in our GitHub documentation.
Educational Resources and Tutorials
To assist you further, we have prepared video tutorials covering various aspects of using MODM:
Source Code Repositories
Published on:
Learn moreRelated posts
Integration Testing Azure Functions with Reqnroll and C#, Part 5 - Using Corvus.Testing.ReqnRoll in a build pipeline
If you use Azure Functions on a regular basis, you'll likely have grappled with the challenge of testing them. In the final post in this serie...
Integration Testing Azure Functions with Reqnroll and C#, Part 4 - Controlling your functions with additional configuration
If you use Azure Functions on a regular basis, you'll likely have grappled with the challenge of testing them. In the fourth of this series of...
Integration Testing Azure Functions with Reqnroll and C#, Part 3 - Using hooks to start Functions
If you use Azure Functions on a regular basis, you'll likely have grappled with the challenge of testing them. In the third of a series of pos...
Integration Testing Azure Functions with Reqnroll and C#, Part 2 - Using step bindings to start Functions
If you use Azure Functions on a regular basis, you'll likely have grappled with the challenge of testing them. In the second of a series of po...
Integration Testing Azure Functions with Reqnroll and C#, Part 1 - Introduction
If you use Azure Functions on a regular basis, you'll likely have grappled with the challenge of testing them. In the first of a series of pos...
Announcing Azure MCP Server 2.0 Stable Release for Self-Hosted Agentic Cloud Automation
Azure MCP Server 2.0 is now generally available, delivering first-class self-hosting, stronger security hardening, and a faster foundation for...
Azure Security: Private Vs. Service Endpoints
When connecting securely to a platform service such as a key vault or an Azure storage account, Microsoft recommends using a private endpoint ...
Give your Foundry Agent Custom Tools with MCP Servers on Azure Functions
Learn how to connect your MCP server hosted on Azure Functions to Microsoft Foundry agents. This post covers authentication options and setup ...
Azure Data Factory Tips for Reliable Microsoft Dynamics 365 CE and Dataverse Integrations
Reliable integrations between Microsoft Dynamics 365 Customer Engagement and external systems can become challenging. This is especially true ...
Scalable AI with Azure Cosmos DB: Tredence Intelligent Document Processing (IDP) | March 2026
Azure Cosmos DB enables scalable AI-driven document processing, addressing one of the biggest barriers to operational scale in today’s enterpr...