Skip to content

ALOps AppSource

Publish Business Central extensions to Microsoft AppSource via Partner Center Ingestion API.

Property Value
Task name (Azure DevOps) ALOpsAppSource@3
Action name (GitHub) alops-appsource
Version 3.0.0
Category Deploy
OS requirement Both
Preview yes

Publishes Business Central .app files to Microsoft AppSource. Authenticates via Azure AD, discovers offerings, matches local apps, uploads packages via SAS URI, creates submissions, and optionally auto-promotes through the certification pipeline. Local apps are matched to offerings by comparing the 'Name' field of app.json against the 'Offer Alias' of each AppSource offering — they must be identical.

Inputs

authentication

Name Type Required Default Platform Description
azure_tenant_id Text no (empty) Both Azure AD tenant ID for Partner Center authentication. Falls back to environment variable 'alops_tenant_id' if empty.
azure_app_client_id Text no (empty) Both Azure AD application (client) ID for Partner Center authentication. Falls back to environment variable 'alops_application_id' if empty.
azure_app_client_secret Secret no (empty) Both Azure AD client secret for Partner Center authentication. Falls back to environment variable 'alops_application_secret' if empty. Automatically masked in logs.

offerings

Name Type Required Default Platform Description
offering_name_filter Text no (empty) Both Semicolon-separated list of offerings to include, matched against the AppSource 'Offer Alias' (the same value that must equal the local app.json 'Name'). Leave empty to process all Business Central offerings.
apply_offering_version_filter Boolean no false Both When enabled, only uploads offerings where the local app version is higher than the currently published version.
skip_version_change Boolean no false Both When enabled, skips updating the version number in Partner Center. Useful for re-submitting the same version.

promotion

Name Type Required Default Platform Description
autopromote Boolean no false Both Automatically promote the submission to go live after it reaches 'ReadyToPublish' status.
autopromote_check_delay Text no 30 Both Seconds to wait between status polling attempts during auto-promotion.
autopromote_max_tries Text no 120 Both Maximum number of polling attempts before timing out during auto-promotion.

Outputs

Name Description
submitted_offerings Comma-separated list of offering names that were submitted.
submitted_count Number of offerings submitted.

Usage

- task: ALOpsAppSource@3
  displayName: 'ALOps AppSource'
  inputs:
    azure_tenant_id:                      # Azure AD tenant ID for Partner Center authentication. Falls back to environment variable 'alops_tenant_id' if empty. $(azure_tenant_id)
    azure_app_client_id:                  # Azure AD application (client) ID for Partner Center authentication. Falls back to environment variable 'alops_application_id' if empty. $(azure_app_client_id)
    azure_app_client_secret:              # Azure AD client secret for Partner Center authentication. Falls back to environment variable 'alops_application_secret' if empty. Automatically masked in logs. $(azure_app_client_secret)
    offering_name_filter:                 # Semicolon-separated list of offerings to include, matched against the AppSource 'Offer Alias' (the same value that must equal the local app.json 'Name'). Leave empty to process all Business Central offerings. $(offering_name_filter)
    apply_offering_version_filter: False  # When enabled, only uploads offerings where the local app version is higher than the currently published version. $(apply_offering_version_filter)
    skip_version_change: False            # When enabled, skips updating the version number in Partner Center. Useful for re-submitting the same version. $(skip_version_change)
    autopromote: False                    # Automatically promote the submission to go live after it reaches 'ReadyToPublish' status. $(autopromote)
    autopromote_check_delay: 30           # Seconds to wait between status polling attempts during auto-promotion. $(autopromote_check_delay)
    autopromote_max_tries: 120            # Maximum number of polling attempts before timing out during auto-promotion. $(autopromote_max_tries)
- name: ALOps AppSource
  uses: HodorNV/ALOps-V3/alops-appsource@v3   <!-- TODO: confirm action repo path -->
  with:
    azure_tenant_id: ''
    azure_app_client_id: ''
    azure_app_client_secret: ''
    offering_name_filter: ''
    apply_offering_version_filter: 'false'
    skip_version_change: 'false'
    autopromote: 'false'
    autopromote_check_delay: '30'
    autopromote_max_tries: '120'