Configure a managed application plan

This article applies only to managed application plans for an Azure application offer. If you're configuring a solution template plan, go to Configure a solution template plan.

Reuse technical configuration (optional)

If you've created more than one plan of the same type within this offer and the technical configuration is identical between them, you can reuse the technical configuration from another plan. This setting can't be changed after this plan is published.

To reuse a technical configuration:

  1. Select the This plan reuses the technical configuration from another plan of the same type check box.
  2. In the list that appears, select the base plan you want.

Note

If a plan is currently reusing or has reused the technical configuration from another plan of the same type, go to that base plan to view history of previously published packages. Reusing technical configuration will override the plan technical configuration settings, including the publisher management and customer access selection of Managed Applications which can't be changed after the plan is published.

Define markets, pricing, and availability

Every plan must be available in at least one market. On the Pricing and availability tab, you can configure the markets this plan will be available in, the price, and whether to make the plan visible to everyone or only to specific customers (also called a private plan).

  1. Under Markets, select the Edit markets link.
  2. In the dialog box that appears, select the market locations where you want to make your plan available. You must select a minimum of one and maximum of 141 markets.
  3. Select Save, to close the dialog box.

Note

This dialog box includes a search box and an option to filter on only "Tax Remitted" countries/regions, in which Microsoft remits sales and use tax on your behalf.

Define pricing

In the Price box, provide the per-month price for this plan. This price is in addition to any Azure infrastructure or usage-based costs incurred by the resources deployed by this solution.

In addition to the per-month price, you can also set prices for consumption of non-standard units using metered billing. You can set the per-month price to zero and charge exclusively using metered billing if you like.

Prices are set in USD (USD = United States Dollar) are converted into the local currency of all selected markets using the current exchange rates when saved. Prices are published in the local currency of the selected markets and aren't updated once published. Validate these prices before publishing by exporting the pricing spreadsheet and reviewing the price in each market. If you would like to set custom prices in an individual market, modify and import the pricing spreadsheet.

Add a custom meter dimension (optional)

  1. Under Marketplace Metering Service dimensions, select the Add a Custom Meter Dimension (Max 18) link.
  2. In the ID box, enter the immutable identifier reference while emitting usage events.
  3. In the Display Name box, enter the display name associated with the dimension. For example, "text messages sent".
  4. In the Unit of Measure box, enter the description of the billing unit. For example, "per text message" or "per 100 emails".
  5. In the Price per unit in USD box, enter the price for one unit of the dimension.
  6. In the Monthly quantity included in base box, enter the quantity (as an integer) of the dimension that's included each month for customers who pay the recurring monthly fee. To set an unlimited quantity, select the check box instead.
  7. To add another custom meter dimension, repeat steps 1 through 6.

Note

It is recommended to restrict customer access with Deny Assignments to prevent customers from tampering with resources emitting usage from the Managed Resource Group. If your application must give Customers Full Access and uses billing meters, host the metering service outside of the managed resource group and authenticate using Microsoft Entra Application Id to prevent customers from tampering with the metering resource

Set custom prices (optional)

Prices set in USD (USD = United States Dollar) are converted into the local currency of all selected markets using the current exchange rates when saved. Prices are published in the local currency of the selected markets and aren't updated once published. Validate these prices before publishing by exporting the pricing spreadsheet and reviewing the price in each market. If you would like to set custom prices in an individual market, modify and import the pricing spreadsheet.

To set custom prices in an individual market, export, modify, and then import the pricing spreadsheet. You're responsible for validating this pricing and owning these settings. For detailed information, see Custom prices.

  1. You must first save your pricing changes to enable export of pricing data. Near the bottom of the Pricing and availability tab, select Save draft.

  2. Under Pricing, select the Export pricing data link.

  3. Open the exportedPrice.xlsx file in Microsoft Excel.

  4. In the spreadsheet, make the updates you want to your pricing information and then save the file.

    You might need to enable editing in Excel before you can update the file.

  5. On the Pricing and availability tab, under Pricing, select the Import pricing data link.

  6. In the dialog box that appears, click Yes.

  7. Select the exportedPrice.xlsx file you updated, and then click Open.

Note

Offers will be billed to customers in the customers' agreement currency, using the local market price that was published at the time the offer was created. The amount that customers pay, and that ISVs are paid, depends on the Foreign Exchange rates at the time the customer transacts the offer. Learn more on "How we convert currency?".

Choose who can see your plan

You can configure each plan to be visible to everyone or to only a specific audience. You grant access to a private audience using Azure subscription IDs with the option to include a description of each subscription ID you assign. You can add a maximum of 10 subscription IDs manually or up to 10,000 subscription IDs using a .CSV file. Azure subscription IDs are represented as GUIDs and letters must be lowercase.

Note

If you publish a private plan, you can change its visibility to public later. However, once you publish a public plan, you can't change its visibility to private.

Under Plan visibility, do one of the following:

  • To make the plan public, select the Public option button (also known as a radio button).
  • To make the plan private, select the Private option button and then add the Azure subscription IDs manually or with a CSV file.

Note

A private or restricted audience is different from the preview audience you defined on the Preview tab. A preview audience can access your offer before it's published live in the marketplace and should only be used for publisher's review. While the private audience choice only applies to a specific plan, the preview audience can view all plans (private or not) for validation purposes.

Manually add Azure subscription IDs for a private plan

  1. Under Plan visibility, select the Private option button.
  2. In the Azure Subscription ID box that appears, enter the Azure subscription ID of the audience you want to grant access to this private plan. A minimum of one subscription ID is required.
  3. (Optional) Enter a description of this audience in the Description box.
  4. To add another subscription ID, select the Add ID (Max 10) link and repeat steps 2 and 3.

Use a .CSV file to add Azure subscription IDs for a private plan

  1. Under Plan visibility, select the Private option button.
  2. Select the Export Audience (csv) link.
  3. Open the .CSV file and add the Azure subscription IDs you want to grant access to the private offer to the ID column.
  4. Optionally, enter a description for each audience in the Description column.
  5. Add "SubscriptionId" in the Type column, for each row with a subscription ID.
  6. Save the .CSV file.
  7. On the Availability tab, under Plan visibility, select the Import Audience (csv) link.
  8. In the dialog box that appears, select Yes.
  9. Select the .CSV file and then select Open. A message appears indicating that the .CSV file was successfully imported.

Define the technical configuration

On the Technical configuration tab, you'll upload the deployment package that lets customers deploy your plan and provide a version number for the package. You'll also provide other technical information.

Note

This tab won't be visible if you chose to reuse packages from another plan on the Plan setup tab. If so, go to View your plans.

Assign a version number for the package

In the Version box provide the current version of the technical configuration. Increment this version each time you publish a change to this page. The version number must be in the format: integer.integer.integer. For example, 1.0.2.

Upload a package file

Make sure your offer is compliant with our recommended practices by using the ARM template test toolkit before uploading the package file.

Under Package file (.zip), drag your package file to the gray box or select the browse for your file(s) link.

Note

If you have an issue uploading files, make sure your local network does not block the https://upload.xboxlive.com service used by Partner Center.

Previously published packages

The Previously published packages sub-tab enables you to view all published versions of your technical configuration.

Select a deployment mode

Select either the Complete or Incremental deployment mode.

  • In Complete mode, a redeployment of the application by the customer will result in removal of resources in the managed resource group if the resources aren't defined in the mainTemplate.json.
  • In Incremental mode, a redeployment of the application leaves existing resources unchanged.

To learn more about deployment modes, see Azure Resource Manager deployment modes.

Provide a notification endpoint URL

In the Notification Endpoint URL box, provide an HTTPS Webhook endpoint to receive notifications about all CRUD operations on managed application instances of this plan version.

Azure appends /resource to the end of your webhook URI before calling it. So, your webhook URL must end in /resource, but don't include /resource in the URL you enter into the Notification Endpoint URL box. For more information about the webhook URL, see Plan a managed application.

Publisher Management Access

Enabling management access gives publisher access to the managed resource group that hosts your application in the customer tenant. Disabling management access fully removes management and read access to the managed resource group.

Note

Publisher management access can't be modified after the offer is live in marketplace.

Select either to Enable management access or Disable management access.

  • Select Enable management access if you need cross-tenant access to manage your application hosted in the customer's Azure tenant. If you select to enable publisher management access, you will need to specify the Azure tenant and Principal ID that will manage the application.

  • Select Disable management access to remove management and read access to the managed resource group in the customer's Azure tenant.

Enable just-in-time (JIT) access (optional)

To enable JIT access for this plan, select the Enable just-in-time (JIT) access check box. To require that consumers of your managed application grant your account permanent access, leave this option unchecked. To learn more about this option, see Just in time (JIT) access.

Choose who can manage the application

This option is only available when Publisher Management Access is enabled.

Indicate who should have management access to this managed application in each selected Azure region: Global Azure and Azure Government Cloud. You will use Microsoft Entra identities to identify the users, groups, or applications that you want to grant permission to the managed resource group. For more information, see Plan an Azure managed application for an Azure Application offer.

Complete the following steps for Global Azure and Azure Government Cloud, as applicable.

  1. In the Microsoft Entra tenant ID box, enter the Microsoft Entra tenant ID (also known as directory ID) containing the identities of the users, groups, or applications you want to grant permissions to.
  2. In the Principal ID box, provide the Microsoft Entra object ID of the user, group, or application that you want to be granted permission to the managed resource group. Select a user from the list at the Microsoft Entra users blade and copy the Object ID value of that user.
  3. From the Role definition list, select a Microsoft Entra built-in role. The role you select describes the permissions the principal will have on the resources in the customer subscription.
  4. To add another authorization, select the Add authorization (max 100) link, and repeat steps 1 through 3.

Customer Access

Enabling full customer access gives your customers full access and control to the resources deployed in the managed resource group deployed to their Azure tenant.

Restricting access with deny assignment disables customer access to all resources deployed in the managed resource group in their tenant. When selecting restrict access with deny assignment, the publisher can additionally customize allowed customer actions.

Note

Customer Access can't be modified after the offer is live in marketplace.

Select either to Enable full access or Restrict access with deny assignments

  • Select Enable full access to enable full customer access
  • Select Restrict access with deny assignments to disable customers from modifying resources deployed to the managed resource group that hosts your application. Read permission are available by default.

Customize allowed customer actions (optional)

If you choose to Restrict access with deny assignments, you can optionally specify actions that your customers can perform.

  1. To specify which actions customers can perform on the managed resources in addition to the "*/read" actions that is available by default, select the Customize allowed customer actions box.
  2. In the boxes that appear, provide the additional control actions and allowed data actions you want to enable your customer to perform, separated by semicolons. For example, to permit consumers to restart virtual machines, add Microsoft.Compute/virtualMachines/restart/action to the Allowed control actions box.

Policy settings (optional)

You can configure a maximum of five policies, and only one instance of each Policies option. Some policies require additional parameters.

  1. Under Policy settings, select the + Add policy (max 5) link.

  2. In the Name box, enter the policy assignment name (limited to 50 characters).

  3. From the Policies list box, select the Azure Policy definition that will be applied to resources created by the managed application in the customer subscription.

  4. In the Policy parameters box, provide the parameter on which the auditing and diagnostic settings policies should be applied.

  5. From the Policy SKU list box, select the policy SKU type.

    Note

    The Standard policy SKU is required for audit policies.

View your plans

  • Select Save draft, and then in the upper left of the page, select Plan overview to return to the Plan overview page.

After you create one or more plans, you'll see your plan name, plan ID, plan type, availability (Public or Private), current publishing status, and any available actions on the Plan overview tab.

The actions that are available in the Action column of the Plan overview tab vary depending on the status of your plan, and might include the following:

  • If the plan status is Draft, the link in the Action column will say Delete draft.
  • If the plan status is Live, the link in the Action column will be either Stop distribution or Sync private audience. The Sync private audience link will publish only the changes to your private audiences, without publishing any other updates you might have made to the offer.
  • To create another plan for this offer, at the top of the Plan overview tab, select + Create new plan. Then repeat the steps in How to create plans for your Azure application offer. Otherwise, if you're done creating plans, go to the next section: Next steps.

Next steps