Skip to main content

Universal Code Compliance-Erklärung

Für Microsoft Dynamics 365 Business Central Partner, die DEXPRO Apps vertreiben

Dokumentversion: 1.1 · Stand der Prüfung: 30. Juli 2026 · Herausgeber: DEXPRO Solutions GmbH


1. Zusammenfassung

Alle sechs DEXPRO Apps für Microsoft Dynamics 365 Business Central erfüllen die Definition von Universal Code nach Microsoft: Jede App wird mit "target": "Cloud" kompiliert, und keine App verändert die Basisanwendung. Nachgewiesen wurde dies durch Kompilierung jeder App gegen das Cloud-Target — siehe Abschnitt 5.

Bitte lesen Sie Abschnitt 6, bevor Sie einem Kunden Zusagen machen. Microsoft bewertet die Universal-Code-Konformität über den gesamten Code der Business Central Lizenz des Kunden hinweg, nicht pro App. Die Konformität von DEXPRO bedeutet, dass keine DEXPRO App eine Lizenzpflicht für nicht-Universal-Code auslöst. Sie garantiert jedoch nicht von sich aus, dass für einen konkreten Kunden keine Gebühren anfallen — dessen eigene Per-Tenant-Extensions und Apps anderer Hersteller werden ebenfalls bewertet.


2. Was Universal Code bedeutet (Definition von Microsoft)

Die FAQ von Microsoft zur Business Central Universal Code Initiative definiert die Begriffe wörtlich wie folgt (englisches Original):

Universal Code: Extensions which are compiled with "target": "Cloud" in the app.json.

Non-Universal Code: Extensions which are compiled with target other than "target": "Cloud" in the app.json, and any solutions/customizations which modify the base application.

Übersetzt: Universal Code sind Erweiterungen, die mit "target": "Cloud" in der app.json kompiliert werden. Nicht-Universal-Code sind Erweiterungen, die mit einem anderen Target kompiliert werden, sowie alle Lösungen und Anpassungen, die die Basisanwendung verändern.

Die gleiche FAQ beschreibt den Zweck allgemeiner: „Universal Code refers to partner code isolated in cloud-optimized extensions for Dynamics 365 Business Central so it can be implemented on-premises or online."

Daraus folgen zwei für DEXPRO maßgebliche Punkte:

  1. Technisch entscheidend ist die Eigenschaft target, durchgesetzt durch den AL-Compiler. Mit "target": "Cloud" weist der Compiler .NET-Interoperabilität, Scope('OnPrem')-Member, OnPrem-beschränkte Tabellen und jede weitere API außerhalb der cloud-unterstützten Oberfläche ab.
  2. Eine Veränderung der Basisanwendung ist unabhängig vom Target disqualifizierend. DEXPRO liefert ausschließlich AL-Erweiterungsobjekte aus und kann die Basisanwendung daher nicht verändern.

Microsoft bestätigt außerdem: „When you have successfully published your app on AppSource, your code is already Universal Code." Eine AppSource-Veröffentlichung ist jedoch nicht erforderlich, um Universal Code zu sein: „As long as all apps used by a customer are implemented as Universal Code (cloud-optimized extensions), these modules and associated fees are not required."

Geltungsbereich von Universal Code

Universal Code ist ein Lizenzkonstrukt für On-Premises-Installationen von Business Central. In Business Central online (SaaS) stellt sich die Frage nicht: SaaS akzeptiert ausschließlich cloud-optimierte Erweiterungen, sodass jede in SaaS installierbare App per Definition Universal Code ist. Die in Abschnitt 7 beschriebenen kostenpflichtigen Module existieren ausschließlich für On-Premises-Lizenzen.


3. Prüfungsumfang

App Geprüfte Version App-ID
DEXPRO Core 3.11.0.0 9762f101-ae8a-4a0e-be42-66ec871d1ca0
DEXPRO SQUEEZE 2.49.0.0 368db399-65f5-4250-9afd-b2a67a49e809
DEXPRO Breeze Interface 1.30.0.0 7c431886-108e-44c3-9328-30e2b93edfa6
DEXPRO Advanced Workflow 1.12.0.0 11a79c49-1645-4cf9-9b27-3d2eaafcf9f4
DEXPRO Freeze 1.29.0.0 b9c8c9cc-8cd1-41cc-bf86-7da37ac74c71
DEXPRO eInvoice Sender 2.0.1.0 37f06ebc-53f0-4d9c-9572-7229113363f9

DEXPRO Core ist eine erforderliche Abhängigkeit der übrigen fünf Apps. Es bestehen keine Abhängigkeiten zu Drittanbieter-Apps — der Abhängigkeitsgraph umfasst ausschließlich Microsoft Base-/System-Applications und DEXPRO Core. Somit kann über eine DEXPRO App keine externe Komponente eine Non-Compliance einbringen.


4. Prüfmethodik

Die Konformität wurde nicht allein anhand der Manifest-Dateien beurteilt:

  1. Kompilierung gegen das Cloud-Target. Jede App wurde mit dem AL-Compiler (alc.exe, AL Language Extension 17.0) gegen ihr deklariertes Cloud-Target kompiliert, mit aktiviertem AppSourceCop-Analyzer und dem jeweiligen Ruleset des Repositories. Der Compiler ist die maßgebliche Instanz: Jedes ausschließlich OnPrem verfügbare Konstrukt führt unter "target": "Cloud" zu einem harten Kompilierfehler. Alle sechs Builds erzeugten ein gültiges .app-Artefakt, was bestätigt, dass die Builds vollständig durchliefen und nicht vorzeitig abbrachen.
  2. Prüfung des kompilierten Artefakts. Das im erzeugten .app-Paket eingebettete Manifest wurde zurückgelesen. Alle sechs Pakete tragen im ausgelieferten Binärartefakt Target="Cloud"Runtime="14.0"Application="25.0.0.0" und ShowMyCode="False" — ein Nachweis am Auslieferungsgegenstand selbst, nicht an der Quellkonfiguration.
  3. Quellcode-Prüfung. Der gesamte AL-Quellcode aller sechs Apps (887 Dateien unter app/) wurde auf die in Abschnitt 5.2 genannten disqualifizierenden Konstrukte untersucht.

Die Apps deklarieren eine Mindest-Application-Version von 25.0.0.0. Die zum Prüfzeitpunkt in den Repositories verfügbaren Symbolpakete reichten je Repository von Business Central 27.3 bis 28.3; damit ist zusätzlich belegt, dass die Apps gegen aktuelle BC-Symbole kompilieren.


5. Ergebnisse

5.1 Kompilierung gegen das Cloud-Target

App target Cloud-Kompilierung Target im Artefakt Blockierende Feststellungen
DEXPRO Core Cloud 0 Fehler Cloud keine
DEXPRO SQUEEZE Cloud 0 Fehler Cloud keine
DEXPRO Breeze Interface Cloud 0 Fehler Cloud keine
DEXPRO Advanced Workflow Cloud 0 Fehler Cloud keine
DEXPRO Freeze Cloud 0 Fehler Cloud keine
DEXPRO eInvoice Sender Cloud 0 Fehler Cloud keine

5.2 Quellcode-Prüfung auf nicht-cloudfähige Konstrukte

Über alle 887 AL-Dateien hinweg sind die folgenden Werte in jeder App gleich null:

Disqualifizierendes Konstrukt Vorkommen
dotnet-Blöcke / Assembly-Referenzen 0
Codeunit … Subtype = DotNet 0
[Scope('OnPrem')]-Attribute 0
Tabellen oder Methoden mit Scope = OnPrem 0
COM- / Automation-Variablen 0
SHELL() / Aufruf externer Prozesse 0
Direkter Dateisystemzugriff (Datentyp File) 0
.dll-Assemblies oder .netpackages im Repository 0
Änderungen an der Basisanwendung 0 (strukturell unmöglich — nur Erweiterungsobjekte)
Abhängigkeiten zu Drittanbieter-Apps 0

5.3 Cloud-konforme Implementierungsmuster

Die Apps verwenden durchgängig die cloud-zulässigen AL-Alternativen:

  • Ausgehende HTTP-Aufrufe nutzen die AL-eigenen Typen HttpClient / HttpRequestMessage, niemals .NET WebRequest. Dies betrifft Core (WebRequestMgtOAuth2MgtOpenIDMgt), SQUEEZE, Freeze, Advanced Workflow und eInvoice Sender.
  • Umgang mit Geheimnissen erfolgt über IsolatedStorage für Token und Zugangsdaten (Core, SQUEEZE) — nie über Klartext-Tabellenfelder oder Dateien.
  • Dateiverarbeitung nutzt die Microsoft-Standard-Codeunit "File Management" (BLOBExportGetExtensionGetFileNameMimeType) in Verbindung mit TempBlob / InStream / OutStream. Dies ist die cloud-unterstützte API, kein OnPrem-Dateizugriff.
  • UI-Erweiterbarkeit erfolgt über JavaScript/HTML Control Add-ins (Dokumentenviewer, Drag & Drop, Workflow-Visualisierung). Alle 11 Control Add-ins sind skriptbasiert; keines referenziert eine .NET-Assembly.
  • Authentifizierung erfolgt über OAuth2 / OpenID Connect auf Basis der Standardplattform.

5.4 Weitere Plattform- und Marketplace-Merkmale

Merkmal Status in allen sechs Apps
Runtime-Version 14.0
Application (Mindest-BC-Version) 25.0.0.0
target Cloud
resourceExposurePolicy allowDebugging: falseallowDownloadingSource: false
propagateDependencies true
Features TranslationFileNoImplicitWith
Objekt-Präfix (AppSourceCop-Affix) DXP (reserviert)
Unterstützte Sprachen de-DE, en-US
Datenschutzerklärung / EULA / Hilfe-URLs vorhanden
Telemetrie Application Insights (partnerseitig konfigurierbar)

Jede App liefert eigene Berechtigungssätze für die rollenbasierte Zugriffssteuerung, beispielsweise DXP CORE Admin / DXP CORE UserDXP SQUEEZE Admin / DXP SQUEEZE UserDXP Breeze IF Admin / DXP Breeze IF UserDXP AWF Admin / DXP AWF UserDXP Freeze Admin / DXP Freeze User sowie DXP eInvoice Admin / DXP eInvoice Support / DXP eInvoice User.


6. Was diese Erklärung abdeckt — und was nicht

Abgedeckt. Jede in Abschnitt 3 genannte DEXPRO App ist in der genannten Version Universal Code. Keine DEXPRO App löst für Ihren Kunden eine Lizenzpflicht für nicht-Universal-Code aus.

Nicht abgedeckt. Microsoft bewertet die Installation des Kunden als Ganzes. Die FAQ beantwortet die Frage „How can a customer avoid the fees?" mit: „Ensure that all code implemented on license [is] cloud-optimized extensions." Die Gebühr „applies to code modifications associated with both repeatable solutions (ISV apps) and individual customer modifications (PTEs)."

Ein Kunde, der DEXPRO Apps einsetzt, kann daher weiterhin die kostenpflichtigen Module benötigen, wenn irgendein anderer Bestandteil seiner Installation nicht Universal Code ist, zum Beispiel:

  • eine für diesen Kunden erstellte Per-Tenant-Extension (PTE) mit "target": "OnPrem",
  • eine nicht cloud-optimierte App eines anderen Herstellers,
  • eine noch vorhandene Änderung an der Basisanwendung.

Prüfen Sie bei der Kundenberatung jede App und Anpassung auf der Lizenz des Kunden. Diese Erklärung deckt ausschließlich die DEXPRO Komponenten ab.


7. Lizenzrechtliche Folgen und Rollout-Hinweise

Lizenzrechtlicher Hintergrund (On-Premises)

Für Kunden mit einer On-Premises-Lizenz von Business Central erfordert nicht-Universal-Code eines oder beide der folgenden kostenpflichtigen Module:

Modul Erforderlich, wenn
Implemented code is not in extensions Die Basisanwendung verändert wird
Implemented code is not cloud-optimized Der gesamte Code liegt in Erweiterungen, aber mindestens eine Erweiterung ist nicht cloudfähig

Gemäß der Microsoft-FAQ gilt:

  • Ausnahme nach Datum. On-Premises-Installationen von Business Central mit einem First Registration Date vor dem 3. Oktober 2022 im PartnerSource Business Center benötigen diese Module und Gebühren nicht. Kunden, die BC On-Premises am oder nach diesem Datum lizenzieren — einschließlich über einen Transition-Auftrag aus NAV/GP/SL — benötigen sie, sofern nicht-Universal-Code eingesetzt wird.
  • Gebührenbasis. Die Module müssen „at a quantity equal to the number of full users (Premium or Essentials) in the Business Central on-premises license" lizenziert werden; die Gebühren sind proportional zur Anzahl der Full User. Bei perpetuellen Lizenzen erscheinen sie im Angebot zur Verlängerung des Enhancement Plans und werden zum Jahrestag des Enhancement Plans abgerechnet; bei Subscription-Lizenzen werden sie monatlich dem Partner of Record in Rechnung gestellt.
  • Technische Durchsetzung. Die Durchsetzung ist nicht nur vertraglich. Microsoft führt aus: „For Business Central on-premises customer licenses registered after October 3, 2022, you will be unable to start sessions running code that modifies the base application or is targeted for on-premises without licenses for the required modules." Da alle DEXPRO Apps Universal Code sind, verursachen sie keine solche Sitzungsblockade.

Die aktuellen Modulpreise werden hier nicht wiedergegeben; bitte entnehmen Sie diese dem PartnerSource Business Center oder Ihrem Microsoft Regional Operations Center, da sich Gebührenmodelle ändern.

Rollout-Hinweise

  • Business Central online (SaaS): Alle Apps lassen sich ohne Universal-Code-Implikationen installieren.
  • On-Premises / Hybrid: Alle Apps werden als cloud-optimierte Erweiterungen installiert und erfordern aus eigenem Anlass kein kostenpflichtiges Modul für nicht cloud-optimierten Code. Zu beachten ist, dass ausgehende HTTP-Aufrufe von Erweiterungen in der On-Premises-Serverkonfiguration freigegeben sein müssen (Allow HttpClient Requests an der Erweiterung). Dies ist eine übliche administrative Einstellung und kein Compliance-Thema.
  • Upgrade-Sicherheit: DEXPRO verfolgt eine strikte Obsoletion-Richtlinie. Öffentliche Prozeduren, Tabellenfelder, Enum-Werte, Events und Interface-Methoden werden mit ObsoleteState = Pending, einer benannten Ersatzlösung und einem Versions-Tag gekennzeichnet; sie werden nie ohne Vorankündigung entfernt. Im Build-Log sichtbare Deprecation-Warnungen sind beabsichtigt und stellen keine Konformitätsmängel dar.
  • Mindestplattform: Business Central 25.0 oder höher.

8. Pflege dieser Erklärung

Die Universal-Code-Konformität wird bei jedem Release der App-Familie erneut geprüft, indem jede App mit aktiviertem AppSourceCop-Analyzer gegen das Cloud-Target kompiliert wird. Die Empfehlung von Microsoft an Partner lautet, „set the "target": "Cloud" in the app.json, and enable PerTenantExtensionCop and/or AppSourceCop" — DEXPRO folgt dieser Praxis.

Diese Erklärung bezieht sich auf die in Abschnitt 3 genannten App-Versionen. Fordern Sie eine aktualisierte Erklärung an, wenn Sie neuere Versionen vertreiben.

Bei technischen Fragen wenden Sie sich an die DEXPRO Solutions GmbH unter https://www.dexpro.de/.


9. Quellen

Die oben zitierten technischen Definitionen und lizenzrechtlichen Mechanismen stammen aus Business Central Universal Code Initiative — Frequently asked questions (Microsoft Partnerdokumentation, erreichbar über https://aka.ms/BCUniversalCode). Die für diese Prüfung herangezogene Fassung ist vom 27. September 2022 und als Pre-Release gekennzeichnet; lizenzrechtliche Einzelheiten wie Preise sollten gegen aktuelle Microsoft-Lizenzunterlagen und das PartnerSource Business Center abgeglichen werden.