AL Object ID Ninja is now available as a GitHub Action and an Azure DevOps Pipeline Task. It scans your AL repository during CI/CD and fails the build if it finds any object IDs, field IDs, or enum value IDs that aren’t tracked by the Ninja backend. No more spreadsheets, no more “we’ll coordinate manually”, no more conflicts surfacing during deployment.
Multi-app repos and app pools are supported automatically.
GitHub Actions
Add a new workflow file to your repository:
# .github/workflows/ninja-check.ymlname: AL Object ID Ninja Checkon: push: branches: [main] pull_request: branches: [main] workflow_dispatch:jobs: check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: vjekob/al-objid-ninja-action@main
If you don’t need to check field IDs or enum value IDs, you can exclude them:
- uses: vjekob/al-objid-ninja-action@main with: exclude-field-ids: 'true' exclude-enum-value-ids: 'true'
Azure DevOps
Install AL Object ID Ninja Task from the Azure DevOps Marketplace, then add the task to your pipeline:
- task: al-objid-ninja@1
Same optional exclusions apply:
- task: al-objid-ninja@1 inputs: excludeFieldIds: true excludeEnumValueIds: true
The Azure DevOps task is still under development, so treat it as a preview for now. The GitHub Action is production-ready.
Using Ninja with AL-Go for GitHub
You can’t inject steps into AL-Go workflows directly – AL-Go manages its own workflow files and overwrites customizations. Instead, create the Ninja check as a separate workflow file (like the example above) that runs independently alongside your AL-Go builds.
To enforce the check, go to Settings → Branches → Branch protection rules and add the Ninja workflow as a required status check. Both AL-Go and the Ninja check must pass before a pull request can be merged. The check runs in a few seconds and won’t slow down your builds.
What’s Next
This is just the beginning. More features are coming – but even as it stands today, having your pipeline catch untracked IDs before they reach main is already a meaningful improvement over relying on developers to stay in sync manually.
Give it a try and let me know how it works for you. If you run into anything unexpected, or have ideas for what you’d like to see next, drop a comment below or reach out directly.
