Codeunit 2504 "Extension Management"
System Application · System.Apps
Across versions
- BC23-30present
Neighbourhood 20 connected objects and pages
System Application · System.Apps · BC23-30 · source at ea08af5e · facts from BC29
Properties
| Property | Value |
|---|---|
| Access | Public |
Procedures
InstallExtension(PackageId: Guid; lcid: Integer; IsUIEnabled: Boolean): Boolean: Installs an extension, based on its PackageId and Locale Identifier.UninstallExtension(PackageId: Guid; IsUIEnabled: Boolean): Boolean: Uninstalls an extension, based on its PackageId.UninstallExtensionAndDeleteExtensionData(PackageId: Guid; IsUIEnabled: Boolean): Boolean: Uninstalls an extension, based on its PackageId and permanently deletes the tables that contain data for the extension.UploadExtension(FileStream: InStream; lcid: Integer): Uploads an extension, using a File Stream and based on the Locale Identifier. This method is only applicable in SaaS environment.DeployExtension(AppId: Guid; lcid: Integer; IsUIEnabled: Boolean): Deploys an extension, based on its ID and Locale Identifier. This method is only applicable in SaaS environment.UnpublishExtension(PackageId: Guid): Boolean: Unpublishes an extension, based on its PackageId. An extension can only be unpublished, if it is a per-tenant one and it has been uninstalled first.DownloadExtensionSource(PackageId: Guid): Boolean: Downloads the source of an extension, based on its PackageId.GetExtensionSource(PackageId: Guid; var ExtensionSourceTempBlob: Codeunit "Temp Blob"): Boolean: Retrives the source of an extension, based on its PackageId.IsInstalledByPackageId(PackageId: Guid): Boolean: Checks whether an extension is installed, based on its PackageId.IsInstalledByAppId(AppId: Guid): Boolean: Checks whether an extension is installed, based on its AppId.GetAllExtensionDeploymentStatusEntries(var TempExtensionDeploymentStatus: Record "Extension Deployment Status" temporary): Retrieves a list of all the Deployment Status EntriesGetDeployOperationInfo(OperationId: Guid; var Version: Text; var Schedule: Text; var Publisher: Text; var AppName: Text; Description: Text): Retrieves the AppName,Version,Schedule,Publisher by the NAVApp Tenant OperationId.RefreshStatus(OperationId: Guid): Refreshes the status of the Operation.ConfigureExtensionHttpClientRequestsAllowance(PackageId: Text; AreHttpClientRqstsAllowed: Boolean): Boolean: Allows or disallows Http Client requests against the specified extension.GetLatestVersionPackageIdByAppId(AppId: Guid): Guid: Gets the PackageId of the latest Extension Version by the Extension AppId.GetCurrentlyInstalledVersionPackageIdByAppId(AppId: Guid): Guid: Gets the PackageId of the latest version of the extension by the extension’s AppId.GetSpecificVersionPackageIdByAppId(AppId: Guid; Name: Text; VersionMajor: Integer; VersionMinor: Integer; VersionBuild: Integer; VersionRevision: Integer): Guid: Gets the package ID of the version of the extension by the extension’s AppId, Name, Version Major, Version Minor, Version Build, Version Revision.GetExtensionLogo(AppId: Guid; var LogoTempBlob: Codeunit "Temp Blob"): Gets the logo of an extension.UploadExtensionToVersion(FileInStream: InStream; lcid: Integer; DeployTo: Enum "Extension Deploy To"): Uploads an extension to current version, next minor or next major, using a File Stream and based on the Locale Identifier. This method is only applicable in SaaS environment.UploadExtensionToVersion(FileInStream: InStream; lcid: Integer; DeployTo: Enum "Extension Deploy To"; SyncMode: Enum "Extension Sync Mode"): Uploads an extension to current version, next minor or next major, using a File Stream and based on the Locale Identifier. This method is only applicable in SaaS environment.InstallMarketplaceExtension(AppId: Guid): Installs an extension, based on its extension id.GetAppName(AppId: Guid): Text: Returns the Name of the app given the App Id.GetDeploymentDetailedStatusMessage(OperationId: Guid): Text: Returns the detailed message from a deployment operation.GetDeploymentDetailedStatusMessageAsStream(OperationId: Guid; OutStream: OutStream): Writes the detailed message from a deployment operation to a stream.
Calls
From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an Object::"Name" argument. Interface dispatch and calls through events are not counted, so the list is not complete.
- Codeunit 2503 “Extension Operation Impl” (16 calls:
ConfigureExtensionHttpClientRequestsAllowance → ConfigureExtensionHttpClientRequestsAllowance,DeployExtension → DeployExtension,DownloadExtensionSource → DownloadExtensionSource, …) - Codeunit 2500 “Extension Installation Impl” (5 calls:
InstallExtension → InstallExtension,IsInstalledByAppId → IsInstalledByAppId,IsInstalledByPackageId → IsInstalledByPackageId, …) - Codeunit 2501 “Extension Marketplace” (1 call:
InstallMarketplaceExtension → InstallAppsourceExtensionWithRefreshSession)
Called by
- Page 30002 “APIV2 - Aut. Extensions” (9 calls:
install → InstallExtension,install → IsInstalledByPackageId,OnAfterGetCurrRecord → IsInstalledByPackageId, …) - Page 20002 “APIV1 - Aut. Extensions” (5 calls:
install → InstallExtension,install → IsInstalledByPackageId,OnAfterGetCurrRecord → IsInstalledByPackageId, …) - Codeunit 9192 “Company Creation Demo Data” (4 calls:
AreAppsInstalled → IsInstalledByAppId,TryInstallApp → GetLatestVersionPackageIdByAppId,TryInstallApp → InstallExtension, …) - Codeunit 20422 “Qlty. Demo Data Mgmt.” (2 calls:
InstallOrOpenDemoData → InstallMarketplaceExtension,IsContosoDemoToolInstalled → IsInstalledByAppId) - Page 20007 “APIV1 - Aut. Extension Depl.” (2 calls:
OnAfterGetRecord → GetDeployOperationInfo,OnAfterGetRecord → RefreshStatus) - Page 30007 “APIV2 - Aut. Extension Depl.” (2 calls:
OnAfterGetRecord → GetDeployOperationInfo,OnAfterGetRecord → RefreshStatus) - Page 5448 “Automation Extension Depl.” (2 calls:
OnAfterGetRecord → GetDeployOperationInfo,OnAfterGetRecord → RefreshStatus) - Codeunit 5330 “CRM Integration Management” (1 call:
IsFieldServiceIntegrationAppInstalled → IsInstalledByAppId) - Page 20006 “APIV1 - Aut. Extension Upload” (1 call:
OnModifyRecord → UploadExtension) - Page 20766 “APIV2 Expanded Permission Sets” (1 call:
OnAfterGetRecord → GetAppName) - Page 2515 “AppSource Product List” (1 call:
OnAfterGetRecord → IsInstalledByAppId) - Page 2516 “AppSource Product Details” (1 call:
SetProduct → IsInstalledByAppId) - Page 30006 “APIV2 - Aut. Extension Upload” (1 call:
Upload → UploadExtensionToVersion) - Page 9197 “Profile Designer Diagnostics” (1 call:
OnAfterGetRecord → GetAppName) - Page 9198 “Profile Import Result List” (1 call:
OnAfterGetRecord → GetAppName) - Page 9199 “Profile Import Wizard” (1 call:
OnAfterGetRecord → GetAppName) - Table 4009 “Migration Table Mapping” (1 call:
UpdateObjectsFilter → IsInstalledByPackageId)
Ask your agent
Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: bcatlas_resolve_node(object_type: "codeunit", object_name: "Extension Management"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.