Skip to main content
This guide explains how to migrate a repository from Azure DevOps to AL-Go for GitHub while preserving the full commit history. This method is recommended when you need to maintain a complete audit trail of all changes.
This migration process leaves your existing Azure DevOps repository untouched. You can continue working in Azure DevOps if needed while testing AL-Go for GitHub.

Overview

This migration method uses GitHub’s repository import feature to transfer your complete git history from Azure DevOps, then replaces the Azure DevOps CI/CD configuration with AL-Go workflows.
If you don’t need to preserve commit history, the migration without history method is simpler and faster.

Prerequisites

Before starting the migration, ensure you have:
  • Access to your Azure DevOps repository
  • A GitHub account with repository creation permissions
  • VS Code installed on your PC
  • Git credentials for Azure DevOps

Migration Process

1

Generate Azure DevOps Git Credentials

Navigate to your Azure DevOps repository and click the Clone button, then click Generate Git Credentials.Generate Credentials
Copy the generated Password to your clipboard. You’ll need this in the next step for authentication.
2

Import Repository to GitHub

Navigate to GitHub, log in, and click the + menu in the top right corner. Select Import repository.Import RepositoryEnter the following information:
  • Your old repository’s clone URL - The Git URL from Azure DevOps
  • Owner - Choose the organization or user account
  • Repository name - Name for your new GitHub repository
  • Privacy - Select Public or Private
Click Begin Import.Begin Import
3

Authenticate with Azure DevOps

If your repository requires authentication, GitHub will prompt you to provide credentials.Authentication RequiredPaste the password you copied earlier from Azure DevOps.
4

Wait for Import to Complete

GitHub will import your repository including all branches, commits, and history. This may take several minutes depending on repository size.Once complete, click the link to navigate to your new repository.Import Complete
You may see messages about branches and pull requests because GitHub has imported everything from Azure DevOps. This is expected behavior.
5

Clone the Imported GitHub Repository

In your new GitHub repository, click the Code button (shown as <>) and copy the git URL to your clipboard.Clone New RepoIn VS Code:
  1. Press Ctrl+Shift+P
  2. Select Git Clone
  3. Paste your git URL
  4. Select a location, clone, and open the repository in VS Code
Clone in VS Code
6

Remove Azure DevOps Artifacts

Delete the files and folders that are not needed in AL-Go for GitHub.
Delete the following folders:
  • .github (if present from Azure DevOps)
  • .azureDevOps
  • .pipelines
  • scripts (Azure DevOps-specific scripts)
Keep:
  • Your app folders
  • Your test app folders
  • Any other project-specific files you want to preserve
Delete Azure DevOps Files
7

Download AL-Go Template Files

Download the appropriate AL-Go template for your project:

PTE Template

Download for Per-Tenant Extensions

AppSource Template

Download for AppSource applications
Unpack the downloaded .zip file and open the extracted folder in File Explorer.Template Files
8

Copy AL-Go Template Files

From the unpacked template folder, drag the following folders to your VS Code window:
  • .AL-Go folder (required)
  • .github folder (required)
  • Any other template files you need
When prompted, select Copy the folders.Copy Template Files
9

Configure AL-Go Settings

Modify the necessary settings for your application. Common settings to configure:

Repository Settings

Typical settings you may need to modify:
  • appFolders - Specify folders containing your apps (documentation)
  • testFolders - Specify folders containing test apps (documentation)
  • runNumberOffset - Adjust build numbering to continue from Azure DevOps (documentation)
Use runNumberOffset to maintain build number continuity from Azure DevOps. Set it to your last Azure DevOps build number.

Code Analysis Settings

AppSource-Specific Settings

  • appSourceMandatoryAffixes - Define required affixes (documentation)

Required Secrets

Secrets must be created in your GitHub repository settings under Settings > Secrets and variables > Actions.
For AppSource Apps:
  • LicenseFileUrl - Secure direct download URL to your license file
For Code Signing (Optional):
  • CodeSignCertificateUrl - Secure direct download URL to your PFX certificate
  • CodeSignCertificatePassword - Password for the PFX certificate
10

Commit and Push Your Changes

In VS Code’s Source Control area:
  1. Click the + icon to Add all changed files to staging
  2. Enter a descriptive commit message (e.g., “Add AL-Go for GitHub workflows”)
  3. Click Commit
  4. Click Sync Changes to push to GitHub
Commit Changes
11

Enable GitHub Actions

Navigate back to your repository on GitHub. Verify your files have been uploaded.Files UploadedGo to Settings > Actions > General:
  1. Select Allow all actions and reusable workflows
  2. Click Save
12

Run the CI/CD Workflow

Click Actions, select the CI/CD workflow, and click Run workflow to manually trigger the first build.Run Workflow
The initial run must be manual because the workflow was just added. Subsequent commits will automatically trigger the CI/CD workflow.
13

Monitor the Workflow Execution

Open the running workflow to view status and summary. Wait for the build to complete.Workflow SuccessScroll down to review:
  • Artifacts - Built app files
  • Test Results - Automated test execution results
Test Results
14

Verify Complete History Preservation

Navigate to Code and click Commits to verify that your complete commit history has been preserved.Complete History
You should see all commits from your Azure DevOps repository, plus the new commit(s) adding AL-Go workflows.

Benefits of Preserving History

Migrating with history provides several advantages:

Complete Audit Trail

Maintain full accountability with every change tracked

Blame Information

Use git blame to identify when and why code was changed

Historical Context

Understand the evolution of your codebase over time

Regulatory Compliance

Meet compliance requirements for change documentation

Next Steps

After successfully migrating your repository:

Configure Environments

Set up deployment environments for your applications

Set Up Continuous Deployment

Configure automatic deployments to your environments

Migrate Azure Pipelines Variables

Transfer any pipeline variables to GitHub secrets or settings

Update Documentation

Update any references from Azure DevOps to GitHub

When to Use This Method

This migration approach is ideal when:
  • You need to preserve complete commit history
  • Regulatory compliance requires full audit trails
  • You want to maintain git blame functionality
  • You’re migrating a mature, long-running project
  • Historical context is important for your team
If you don’t need commit history, the migration without history method is simpler and creates a cleaner starting point.

Troubleshooting

Import Fails with Authentication Error

If the import fails:
  1. Verify you copied the correct password from Azure DevOps
  2. Ensure your Azure DevOps credentials haven’t expired
  3. Check that you have read access to the Azure DevOps repository
  4. Try regenerating the Git credentials in Azure DevOps

Workflow Doesn’t Appear

If the CI/CD workflow doesn’t appear in Actions:
  1. Verify the .github/workflows folder was copied correctly
  2. Check that workflow YAML files are present
  3. Ensure GitHub Actions are enabled in repository settings
  4. Refresh the Actions page

Build Fails on First Run

If the initial build fails:
  1. Verify appFolders and testFolders settings are correct
  2. Check that all required secrets are configured
  3. Review workflow logs for specific error messages
  4. Ensure app.json files are valid
  5. Verify dependencies are correctly specified

Missing Branches or Tags

If branches or tags are missing:
  1. Verify they existed in Azure DevOps before import
  2. Check that the import completed successfully
  3. Try importing again if necessary
  4. Contact GitHub support if issues persist

Comparison with Migration Without History

AspectWith HistoryWithout History
ComplexityModerateSimple
Time RequiredLonger (depends on repo size)Quick
Commit HistoryFully preservedOnly new commits
Git BlameWorks for all filesOnly for new changes
Repository SizeLarger (includes history)Smaller (fresh start)
Best ForProduction apps, compliance needsNew projects, fresh starts

Build docs developers (and LLMs) love