> ## Documentation Index
> Fetch the complete documentation index at: https://docs.emergence.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Azure Marketplace

> Deploy CRAFT from the Azure Marketplace using private offers, CNAB bundles, and MACC committed spend drawdown.

# Azure Marketplace

CRAFT is available on the **Azure Marketplace** as a Container Offer (Kubernetes Application). Customers can deploy the platform into their own AKS clusters and apply purchases against their Microsoft Azure Consumption Commitment (MACC).

## Why Azure Marketplace

<CardGroup cols={2}>
  <Card title="MACC Drawdown" icon="wallet">
    Customers apply CRAFT purchases against their Microsoft Azure Consumption Commitment (MACC), eliminating budget approval friction for Azure-committed enterprises.
  </Card>

  <Card title="Co-Sell with Microsoft" icon="handshake">
    Private offers through Partner Center enable Microsoft field teams to co-sell, providing priority access to enterprise accounts.
  </Card>

  <Card title="Unified Billing" icon="file-invoice-dollar">
    Purchases appear on the customer's existing Azure invoice with no separate vendor billing.
  </Card>

  <Card title="Enterprise Trust" icon="shield-check">
    Azure Marketplace listings undergo Microsoft certification, providing additional trust signals for enterprise procurement.
  </Card>
</CardGroup>

## Architecture

The Azure listing packages the same cloud-agnostic `em-runtime` Helm chart into a CNAB (Cloud Native Application Bundle) format required by Azure Marketplace:

| Component                 | Source                                                             |
| ------------------------- | ------------------------------------------------------------------ |
| **Application chart**     | `em-runtime` Helm chart (cloud-agnostic)                           |
| **Packaging format**      | CNAB bundle (Helm + ARM template + createUIDef)                    |
| **Infrastructure module** | AKS Terraform module (to be built as part of marketplace strategy) |
| **Container images**      | Published to Azure Container Registry (ACR) via CI/CD              |
| **Partner management**    | Azure Partner Center                                               |

<Note>
  Azure Marketplace has the highest packaging complexity of the three cloud marketplaces due to the CNAB bundle requirement. The bundle must include an ARM template and a `createUIDef.json` for the deployment UI.
</Note>

## Deployment Model

<Tabs>
  <Tab title="Private Offer">
    Private offers are managed through Azure Partner Center.

    <Steps>
      <Step title="Create a private offer in Partner Center">
        The sales team configures pricing, selects target Azure tenants or subscription IDs, and generates a private offer with custom terms and pricing.
      </Step>

      <Step title="Customer accepts the offer">
        The customer receives the private offer notification in the Azure Portal, reviews terms, and subscribes. Charges apply against their MACC commitment.
      </Step>

      <Step title="Deploy to AKS">
        After subscription, the platform is deployed into the customer's AKS cluster using the CNAB bundle, which installs the Helm chart with marketplace-specific values.
      </Step>
    </Steps>
  </Tab>

  <Tab title="Self-Service (Phase 3)">
    The self-service deployment uses the CNAB bundle with a `createUIDef.json` that provides:

    * A guided deployment wizard in the Azure Portal
    * AKS cluster selection or provisioning
    * Azure Database for PostgreSQL Flexible Server configuration
    * Azure Cache for Redis provisioning
    * Managed Identity configuration for pod-to-Azure-service authentication
  </Tab>
</Tabs>

## CNAB Bundle Structure

The Azure Container Offer requires a CNAB bundle with these components:

```text theme={null}
cnab/
  bundle.json          # CNAB manifest referencing Helm chart and images
  app/
    Chart.yaml         # em-runtime Helm chart metadata
    values.yaml        # Marketplace-specific defaults
    templates/         # Helm templates
  arm/
    mainTemplate.json  # ARM template for Azure resource provisioning
    createUIDef.json   # Deployment UI definition for Azure Portal
```

### createUIDef.json

The `createUIDef.json` defines the deployment wizard that customers see in the Azure Portal:

* **Basics**: Subscription, resource group, region selection
* **AKS Configuration**: Cluster selection or creation parameters
* **Database**: Azure Database for PostgreSQL connection settings
* **Cache**: Azure Cache for Redis connection settings
* **Identity**: Managed Identity configuration for Keycloak and secrets backend (Infisical or ESO)

## Billing Integration

Azure billing uses the **Metering Service API** for consumption tracking.

### Pricing Model

| Model             | Fee        | Mechanism                                    |
| ----------------- | ---------- | -------------------------------------------- |
| **Flat rate**     | \~3%       | Monthly or annual subscription               |
| **Custom meters** | \~3%       | Per-dimension usage via Metering Service API |
| **Private Offer** | Negotiable | Custom pricing per customer                  |

### Metered Dimensions

| Dimension           | Unit  | Description                    |
| ------------------- | ----- | ------------------------------ |
| `agentsRegistered`  | count | Active A2A agent registrations |
| `apiRequests`       | count | Total API requests             |
| `dataTransferOutGB` | GB    | Data egress from the platform  |
| `healthChecks`      | count | Health check probes performed  |

## Container Image Publishing

The CI/CD pipeline publishes images to Azure Container Registry (ACR):

```bash theme={null}
# Authenticate to ACR
az acr login --name emergenceai

# Tag and push images
docker tag emergence/governance:$VERSION emergenceai.azurecr.io/emergence/governance:$VERSION
docker push emergenceai.azurecr.io/emergence/governance:$VERSION
```

All 12+ container images (3 production + 5 subchart + 4 init) are published to ACR as part of the multi-registry CI/CD pipeline.

## Prerequisites for Deployment

Before deploying from Azure Marketplace:

1. **AKS cluster** -- An existing AKS cluster (1.28+) with system and user node pools
2. **Azure Database for PostgreSQL** -- Flexible Server with PostgreSQL 17+ and 9 databases
3. **Azure Cache for Redis** -- Redis 7 instance for caching and event streaming
4. **Managed Identity** -- User-assigned managed identity for pod-to-service authentication
5. **Networking** -- VNet with AKS integration and private endpoints for database and cache

## Partner Center Certification

Azure Marketplace requires additional certification steps:

| Requirement              | Description                                                  |
| ------------------------ | ------------------------------------------------------------ |
| **Technical validation** | Microsoft validates the CNAB bundle deploys correctly to AKS |
| **Security review**      | Container images are scanned for vulnerabilities             |
| **Documentation**        | Deployment guide and support documentation required          |
| **Support plan**         | SLA and support contact information must be provided         |

<Warning>
  Partner Center certification can take 2-4 weeks. Plan for this timeline when targeting Azure Marketplace availability.
</Warning>

## Troubleshooting

<AccordionGroup>
  <Accordion title="CNAB deployment fails with template errors">
    Verify the ARM template in `mainTemplate.json` is valid using `az deployment group validate`. Ensure the `createUIDef.json` schema matches the ARM template parameters.
  </Accordion>

  <Accordion title="ACR image pull failures">
    Verify the AKS cluster has the `AcrPull` role assignment on the ACR instance. For cross-subscription deployments, ensure the managed identity has appropriate permissions.
  </Accordion>

  <Accordion title="MACC credits not applied">
    Confirm the offer is MACC-eligible in Partner Center. The customer's MACC agreement must include Azure Marketplace purchases -- older agreements may not include this benefit.
  </Accordion>
</AccordionGroup>

## Next Steps

<CardGroup cols={2}>
  <Card title="GCP Marketplace" icon="cloud" href="/guides/marketplace/gcp">
    Learn about the GCP Marketplace listing and GKE deployment.
  </Card>

  <Card title="AWS Marketplace" icon="cloud" href="/guides/marketplace/aws">
    Learn about the AWS Marketplace listing and EKS deployment.
  </Card>
</CardGroup>
