Prerequisites
Before you begin, ensure you have:- A GitHub account
- Experience with AL-Go for GitHub (complete other setup scenarios first)
- An existing AppSource app (source code)
- Valid code signing certificate for AppSource
- Azure Key Vault (recommended for secrets management)
- Partner Center account
This guide assumes you’re migrating from another CI/CD system (like Azure DevOps). The principles apply regardless of your current setup.
Create Your Repository
Use the AppSource template
Navigate to https://github.com/microsoft/AL-Go-AppSource and click Use this template.
Import Your App Source Code
Prepare source code archive
- Export your entire app source code from your current system
- Create a
.zipfile containing all source files - Upload to a secure location (Dropbox, Azure Blob Storage, etc.)
- Generate a secure download URL to the
.zipfile
Run the import workflow
- In your repository, go to Actions
- Select Add existing app or test app workflow
- Click Run workflow
- Paste the secure download URL in the Direct Download URL field
- Click Run Workflow
Configure AppSource Requirements
The initial CI workflow will fail with errors about missing AppSource configuration. Let’s fix that:Configure AppSource Cop affixes
Edit Replace
.AL-Go/settings.json and add your mandatory affixes:BingMaps with your actual object prefixes/affixes.Set up Azure Key Vault (recommended)
If using Azure Key Vault for secrets management:
- Create an
AZURE_CREDENTIALSsecret in your GitHub repository - Configure license file indirection (if needed):
This setting is only needed for Business Central versions prior to 22, or if your secret name differs from the default
LicenseFileUrl.Set Up Code Signing
AppSource apps must be code-signed. AL-Go supports multiple signing methods:Method 1: Azure Trusted Signing (Recommended)
Set up Azure Trusted Signing for modern, secure code signing:- Azure Trusted Signing account configured
Azure_Credentialssecret withTrusted Signing Certificate Profile Signerrole
Method 2: Certificate from Azure Key Vault
Store your signing certificate in Azure Key Vault (Premium SKU required):Method 3: Certificate URL (Legacy)
Create two secrets:- CodeSignCertificateUrl: Secure URL to your
.pfxfile - CodeSignCertificatePassword: Password for the certificate
Verify Signing Configuration
After configuring code signing:Configure AppSource Delivery
To enable automatic delivery to AppSource validation:You must create an
AppSourceContext secret containing your Partner Center credentials. See the Secrets documentation for details.Continuous Delivery
SettingcontinuousDelivery: true enables automatic submission to AppSource validation after every successful build:
Advanced AppSource Settings
Include Dependencies in Submission
To include dependencies in your AppSource submission:- Enable dependency artifact generation:
- Specify which dependencies to include:
Obsolete Tag Enforcement
Enforce minimum obsolete tag versions with AppSource Cop rule AS0105:Multiple Apps in One Project
If your project contains multiple apps, specify the main app:Example Complete Configuration
Here’s a complete example.AL-Go/settings.json for an AppSource app:
Next Steps
Configure Secrets
Set up all required secrets for AppSource delivery
Advanced Settings
Explore all available AppSource-specific settings
Create Release
Create and submit releases to AppSource
Testing
Set up sandbox environments for testing
Troubleshooting
AppSource Cop Failures
If AppSource Cop validation fails:- Review the error messages in the build log
- Fix the identified issues in your code
- Ensure all affixes are properly configured
- Verify obsolete tag settings if using them
Signing Failures
If code signing fails:- Verify your certificate is valid and not expired
- Check that the certificate password is correct
- For Azure Key Vault, ensure proper permissions are assigned
- For Trusted Signing, verify role assignments
License File Issues
If builds fail due to license issues:- Verify the
LicenseFileUrlsecret exists and is accessible - Check that the license file is not expired
- Ensure the license includes permissions for your object IDs
- For BC 22+, verify you’re not unnecessarily requiring a custom license