Install
$ agentstack add skill-fernandoartalf-al-copilot-skills-collection-bc-setup-wizard-generator ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
BC Setup Wizard Generator
Automates creation of assisted setup wizards for Business Central setup tables following Guided Experience patterns.
Overview
Generates complete NavigatePage setup wizards with step-based navigation, banner images, temporary records, and Guided Experience registration. Follows Microsoft patterns for assisted setup.
Complete code templates available in: [references/code-templates.md](references/code-templates.md)
Prerequisites
- AL workspace with setup table
- Setup table with fields to configure
- (Optional) Setup page for post-wizard access
Workflow
Step 1: Gather Information
Collect from user:
- Setup entity name (e.g., "Statistical Account")
- Setup table name and ID
- Prefix (e.g., "BCS")
- Number of configuration steps (typically 2-4)
- Field groups per step
- Documentation URLs (video + written)
Step 2: Plan Wizard Steps
Define wizard structure:
- Step 1: Welcome - InstructionalText explaining wizard purpose
- Step 2-N: Configuration - Field groups by logical category
- Final Step: Review & Finish - Read-only summary of all settings
Example 3-step wizard:
- Welcome
- Attachments Settings (Step 1/2)
- Number Series Setup (Step 2/2)
- Review & Finish
Step 3: Create Wizard Page
Create NavigatePage with:
PageType = NavigatePageSourceTable = [Setup Table]SourceTableTemporary = true← Critical for unsaved workflow
Location: src/Page/[Prefix][Entity]SetupWizard.Page.al
See [code-templates.md](references/code-templates.md#wizard-page-structure) for complete structure.
Step 4: Add Banner Groups
Add two banner groups at top of layout:
- SetupWIPBanner: Visible during configuration steps
- SetupFinishedBanner: Visible on review/finish step
Uses Media Repository records:
AssistedSetup-NoText-400px.png(WIP)AssistedSetupDone-NoText-400px.png(Finished)
See [code-templates.md](references/code-templates.md#banner-groups) for complete code.
Step 5: Add Step Groups
Create one group per step with:
Visibleproperty bound toStepXVisibleboolean- InstructionalText for welcome/review steps
- Field groups for configuration
Critical: Use step counters in captions for user guidance:
Caption = 'Attachments Settings 📎(Step 1/3)'
See [code-templates.md](references/code-templates.md#step-groups) for complete patterns.
Step 6: Add Navigation Actions
Add three actions in area(Processing):
- ActionBack:
Enabled = BackActionEnabled, callsNextStep(true) - ActionNext:
Enabled = NextActionEnabled, callsNextStep(false) - ActionFinish:
Enabled = FinishActionEnabled, callsFinishAction()
All have InFooterBar = true for bottom positioning.
See [code-templates.md](references/code-templates.md#navigation-actions) for complete code.
Step 7: Add Page Triggers
OnOpenPage:
- Initialize temporary record from actual setup table
- Call
EnableControls()to show first step - Call
LoadSetupBanner()to load banner images
OnQueryClosePage:
- If
FinishedProcess = true: Commit changes, mark setup complete - Else: Confirm user wants to exit without saving
See [code-templates.md](references/code-templates.md#page-triggers) for complete implementation.
Step 8: Add Navigation Procedures
Create local procedures:
ResetControls(): Reset all visibility booleans and action states
NextStep(Backwards: Boolean): Increment/decrement Step option, call EnableControls()
EnableControls(): Case statement routing Step to SetControlsStepXX()
SetControlsStepXX(): Set visibility for specific step, enable/disable actions
See [code-templates.md](references/code-templates.md#navigation-procedures) for complete code.
Step 9: Add Data Management Procedures
InitRecord():
- Check if setup record exists
- Create temporary record from existing or initialize new
CommitRecord():
- Transfer temporary record to actual setup table
- Insert if new, Modify if exists
FinishAction():
- Set
FinishedProcess = true - Close page (triggers OnQueryClosePage commit)
See [code-templates.md](references/code-templates.md#data-management-procedures) for complete code.
Step 10: Add Setup Banner Loading
LoadSetupBanner():
- Get Media Repository records by name
- Get Media Resources by reference
- Set
BannersVisibleif media has value
See [code-templates.md](references/code-templates.md#banner-loading-procedure) for complete code.
Step 11: Declare Variables
Declare variables:
- Record variables: Setup table, Media Repository (2), Media Resources (2)
- Codeunit:
GuidedExperience - Boolean: StepXVisible (per step), BackActionEnabled, NextActionEnabled, FinishActionEnabled, FinishedProcess, BannersVisible
- Option:
Stepwith values matching step groups
See [code-templates.md](references/code-templates.md#variable-declarations) for complete list.
Step 12: Create Registration Codeunit
Create codeunit with event subscriber:
- Subscribe to
Codeunit::"Guided Experience"::OnRegisterAssistedSetup - Call
AssistedSetup.InsertAssistedSetup()with: - Title and description labels
- Time estimate (minutes)
- Wizard page ID
- Assisted Setup Group
- Video URL and category
- Documentation URL
Location: src/Codeunit/[Prefix][Entity]SetupManagement.Codeunit.al
See [code-templates.md](references/code-templates.md#registration-codeunit) for complete code.
Step 13: Build and Test
- Build project:
al_build - Publish:
al_publish - Test from:
- Assisted Setup page (search "Assisted Setup")
- Extension Management (Setup actions)
- Verify:
- Navigation works (Back/Next/Finish)
- Banners display correctly
- Exit confirmation on close without finish
- Changes saved on finish
- Completion check marked
Troubleshooting
Wizard doesn't appear in Assisted Setup
Cause: Event subscriber not firing or registration failed Fix: Check OnRegisterAssistedSetup event subscriber syntax, verify codeunit compiles without errors
Banners don't display
Cause: Media Repository records not found or media reference empty Fix: Check exact image names (AssistedSetup-NoText-400px.png, AssistedSetupDone-NoText-400px.png), verify Media Repository exists in base BC
Changes saved even when clicking X to close
Cause: OnQueryClosePage not checking FinishedProcess flag Fix: Ensure if FinishedProcess then condition exists, verify FinishAction sets flag before CurrPage.Close()
Steps don't navigate forward/backward
Cause: Step option enum values don't match group names, or EnableControls case statement incomplete Fix: Verify Step option has value for each step (Step10, Step20, Step30, etc.), check Case statement includes all values
Error on finish: "Record already exists"
Cause: CommitRecord trying to Insert when record exists Fix: Check if not SetupRecord.Get() then Insert else Modify pattern in CommitRecord procedure
Setup marked complete but changes not saved
Cause: CommitRecord not called before CompleteAssistedSetup Fix: Ensure OnQueryClosePage calls CommitRecord() before GuidedExperience.CompleteAssistedSetup()
Review step shows editable fields
Cause: Review step groups missing Editable = false property Fix: Add Editable = false to all field groups in final review step
Quick Reference
Snippet: Use Waldo's tpagewizard3stepswaldo snippet for rapid scaffolding
Core Pattern: Temporary record → User edits → Finish commits → Mark complete
Key Properties:
- Page:
PageType = NavigatePage,SourceTableTemporary = true - Actions:
InFooterBar = true - Groups:
Visible = StepXVisible
Required Codeunits: Guided Experience (InsertAssistedSetup, CompleteAssistedSetup)
Media Files: AssistedSetup-NoText-400px.png, AssistedSetupDone-NoText-400px.png
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: fernandoartalf
- Source: fernandoartalf/AL-Copilot-Skills-Collection
- License: MIT
- Homepage: https://alcopilotskills.com/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.