Modules/businessdev.ALbuild.OnPrem/Public/Sync-BcOnPremApp.ps1

function Sync-BcOnPremApp {
    <#
    .SYNOPSIS
        Synchronises an AL app's schema on an on-premises Business Central server instance (licensed).
    .PARAMETER ServerInstance
        The BC server instance.
    .PARAMETER AppName
        The app name.
    .PARAMETER AppVersion
        Optional app version.
    .PARAMETER Mode
        Add (default), Clean, Development or ForceSync.
    .PARAMETER Tenant
        Tenant. Default 'default'.
    #>

    [CmdletBinding(SupportsShouldProcess)]
    param(
        [Parameter(Mandatory)] [string] $ServerInstance,
        [Parameter(Mandatory)] [string] $AppName,
        [string] $AppVersion,
        [ValidateSet('Add', 'Clean', 'Development', 'ForceSync')] [string] $Mode = 'Add',
        [string] $Tenant = 'default'
    )
    Assert-ALbuildLicensed -Feature 'OnPrem'
    Import-BcManagementShell   # loads the BC management cmdlets (Sync-NAVApp etc.) from the server
    if (-not $PSCmdlet.ShouldProcess($ServerInstance, "Sync $AppName ($Mode)")) { return }
    $params = @{ ServerInstance = $ServerInstance; Name = $AppName; Mode = $Mode; Tenant = $Tenant; Force = $true; ErrorAction = 'Stop' }
    if ($AppVersion) { $params['Version'] = $AppVersion }
    Sync-NAVApp @params
    Write-ALbuildLog -Level Success "Synchronised $AppName ($Mode) on '$ServerInstance'."
}