Universal Code Compliance-Erklärung
Für Microsoft Dynamics 365 Business Central Partner, die DEXPRO Apps vertreiben
Dokumentversion: 1.01 · Stand der letzten Prüfung: 29.30. Juli 2026 · Herausgeber: DEXPRO Solutions GmbH
1. Zusammenfassung
Alle sechs DEXPRO Apps für Microsoft Dynamics 365 Business Central sinderfüllen die Definition von vollständig konform mit der Microsoft Universal Code Initiative.nach Microsoft: Jede App ist als cloud-optimierte Erweiterungwird mit "target": "Cloud" entwickeltkompiliert, und enthältkeine 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:
- Technisch entscheidend ist die Eigenschaft
target, durchgesetzt durch den AL-Compiler. Mit"target": "Cloud"weist der Compiler .NET-Interoperabilität,keineScope('OnPrem')-Member,VerwendungOnPrem-beschränkte Tabellen und jede weitere API außerhalb der cloud-unterstützten Oberfläche ab. - 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 OnPrem-beschränktenUniversal APIsCode
Universal Code alsist „nichtein cloud-optimiert" einstufen würden.
Was dasLizenzkonstrukt für Sie als Partner bedeutet:On-Premises-Installationen Der Einsatz von DEXPROBusiness AppsCentral. — sowohl inIn Business Central online (SaaS) alsstellt auchsich On-Premisesdie —Frage löstnicht: nichtSaaS dasakzeptiert kostenpflichtigeausschließlich Microsoft-Lizenzmodulcloud-optimierte „ImplementierterErweiterungen, sodass jede in SaaS installierbare App per Definition Universal Code istist. nichtDie cloud-optimiert"in aus.Abschnitt Für7 Ihrebeschriebenen Kundenkostenpflichtigen entstehenModule durchexistieren keineausschließlich DEXPROfür App Universal-Code-Zusatzkosten.On-Premises-Lizenzen.
2.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 in Ihre Installation einbringen.
3. Anforderungen der Universal Code Initiative
Die Universal Code Initiative gilt seit Business Central 2022 Release Wave 2 (Oktober 2022). Sie verlangt, dass Anpassungen als Erweiterungen (Extensions) ausgeliefert werden und der Erweiterungscode cloud-optimiert ist, d. h. derselbe Code läuft unverändert in Business Central online und On-Premises. Änderungen an der Microsoft-Basisanwendung sind nicht zulässig.
Technisch maßgeblich ist die Eigenschaft target in der app.json. Mit "target": "Cloud" weist der AL-Compiler alles ab, was außerhalb der cloud-unterstützten API-Oberfläche liegt. Code, der nur mit "target": "OnPrem" kompilierbar ist, verpflichtet den Kunden zur Lizenzierung des kostenpflichtigen Moduls „Implementierter Code ist nicht cloud-optimiert".
4. Prüfmethodik
Die Konformität wurde nicht allein anhand der Manifest-Dateien beurteilt.beurteilt:
- Kompilierung gegen das Cloud-Target. Jede App wurde mit dem AL-Compiler (
alc.exe, AL Language Extension 17.0) gegendasihr deklariertes Cloud-Targetkompiliert,kompiliert,einschließlichmit aktiviertem AppSourceCop-Analyzer und dem jeweiligen Ruleset desAppSourceCop-Analyzers, unter Verwendung der Business Central Plattform-Pakete 28.3.Repositories. Der Compiler ist die maßgeblicheInstanz für die Universal-Code-Konformität:Instanz: Jedes ausschließlich OnPrem verfügbare Konstrukt führt unter"target": "Cloud"zu einem harten Kompilierfehler.ZusätzlichAlle sechs Builds erzeugten ein gültiges.app-Artefakt, was bestätigt, dass die Builds vollständig durchliefen und nicht vorzeitig abbrachen. - Prüfung des kompilierten Artefakts. Das im erzeugten
.app-Paket eingebettete Manifest wurde zurückgelesen. Alle sechs Pakete tragen im ausgelieferten BinärartefaktTarget="Cloud",Runtime="14.0",Application="25.0.0.0"undShowMyCode="False"— ein Nachweis am Auslieferungsgegenstand selbst, nicht an der Quellkonfiguration. - Quellcode-Prüfung. Der gesamte AL-Quellcode aller sechs Apps (887
QuelldateienDateien unterapp/) wurde auf die in Abschnitt55.2aufgeführtengenannten disqualifizierendenMuster hinKonstrukte 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,(nichtniemals .NETWebRequest).AlleDiesWebservice-Aufrufe inbetrifft Core (WebRequestMgt,OAuth2Mgt,OpenIDMgt), SQUEEZE, Freeze, Advanced Workflow und eInvoiceSender folgen diesem Muster.Sender. - Umgang mit Geheimnissen erfolgt über
IsolatedStoragefür Token und Zugangsdaten (Core, SQUEEZE) — nie über Klartext-Tabellenfelder oder Dateien. - Dateiverarbeitung nutzt die Microsoft-Standard-Codeunit
"File Management"(BLOBExport,GetExtension,GetFileNameMimeType) in Verbindung mitTempBlob/InStream/OutStream.— diesDies ist die cloud-unterstützte API, kein OnPrem-Dateizugriff. - UI-Erweiterbarkeit erfolgt über JavaScript/HTML Control Add-ins (Dokumentenviewer, Drag & Drop, Workflow-Visualisierung).
—Alleder11cloud-unterstützteControlErweiterungsweg.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: false, allowDownloadingSource: false |
propagateDependencies |
true |
| Features | TranslationFile, NoImplicitWith |
| 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 User, DXP SQUEEZE Admin / DXP SQUEEZE User, DXP Breeze IF Admin / DXP Breeze IF User, DXP AWF Admin / DXP AWF User, DXP Freeze Admin / DXP Freeze User sowie DXP eInvoice Admin / DXP eInvoice Support / DXP eInvoice User.
6. HinweiseWas 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 RolloutBeispiel:
- 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-
EinschränkungImplikationen installieren. - On-Premises / Hybrid: Alle Apps werden als cloud-optimierte Erweiterungen
installiert.installiertFürundkeineerfordernDEXPROausAppeigenemistAnlasseinkein kostenpflichtiges Modul für nicht cloud-optimiertenCode erforderlich.Code. Zu beachten ist, dass ausgehende HTTP-Aufrufe von Erweiterungen in der On-Premises-Serverkonfiguration freigegeben sein müssen (Allow HttpClient Requestsan 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-Taggekennzeichnet —gekennzeichnet; sie werden nie ohne Vorankündigung entfernt. Im Build-Log sichtbare Deprecation-Warnungen sind beabsichtigt und stellenkeinenkeineKonformitätsmangelKonformitätsmängel dar. - Mindestplattform: Business Central 25.0 oder
höher ist erforderlich.höher.
7.8. Pflege dieser Erklärung
Die Universal-Code-Konformität wird imbei Rahmenjedem desRelease DEXPROder Build-ProzessesApp-Familie geprüft;erneut geprüft, indem jede App wird mit aktiviertem AppSourceCop-Analyzer gegen das Cloud-Target kompiliert.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 wirdbezieht beisich jedemauf Majordie Releasein derAbschnitt 3 genannten App-FamilieVersionen. überprüft.Fordern Sie eine aktualisierte Erklärung an, wenn Sie neuere Versionen vertreiben.
Bei technischen Fragen zu dieser Erklärung wenden Sie sich bitte an die DEXPRO Solutions GmbH unter https://www.dexpro.de/.
8.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.
-
- Overview of the Business Central Universal Code initiative (Microsoft Partner) —
aka.ms/BCUniversalCode - The Dynamics 365 Business Central Universal Code initiative is live (Microsoft)
- Compilation scope overview / Eigenschaft
target(Microsoft Learn) — der in der Microsoft-FAQ referenzierte Artikel zur erforderlichen Konfiguration - JSON files reference — app.json (Microsoft Learn)
- Technical validation checklist (Microsoft Learn)
- Overview of the Business Central Universal Code initiative (Microsoft Partner) —