# API-Verbindung D365 F&O

# Einrichtung API-Verbindung D365 F&O

## Microsoft Azure

### App-Registrierung

URL: [https://portal.azure.com/#home](https://portal.azure.com/#home) aufrufen.

1. App-Registrierungen anklicken
2. Auf "Neue Registrierung" klicken.

<div drawio-diagram="2325"><img src="https://wiki.dedesales.de/uploads/images/drawio/2026-06/NKkCQz9icqKLyder-drawing-8-1780315123.png" alt="NKkCQz9icqKLyder-drawing-8-1780315123.png"/></div>

#### Name

Dies sollte ein gängiger Name sein, z.B. "DeDeSales API Zugriff"

#### Unterstützte Kontotypen

I.d.R. ist hier "Nur ein Mandant - ..." mit ihrem Mandantennamen einzustellen. Benötigen wir Zugriff auf mehrere Mandanten müssen Sie dies entsprechend konfigurieren.

#### Umleitung URIs einrichten

Es werden jeweils zwei URIs für Ihr Test+Produktiv-System benötigt. Als Plattform ist immer "Web" zu wählen.

[![image.png](https://wiki.dedesales.de/uploads/images/gallery/2026-06/scaled-1680-/8yoCallcyfJ4znVp-image.png)](https://wiki.dedesales.de/uploads/images/gallery/2026-06/8yoCallcyfJ4znVp-image.png)

In dem Screenshot wurden folgende URLs verwendet:

1. [https://usnconeboxax1aos.cloud.onebox.dynamics.com/](https://usnconeboxax1aos.cloud.onebox.dynamics.com/)
2. [https://usnconeboxax1aos.cloud.onebox.dynamics.com/oauth/](https://usnconeboxax1aos.cloud.onebox.dynamics.com/oauth/)

<p class="callout info">Ggf. müssen Sie hier gar keine URLs eingeben, dies hängt von Ihrer Umgebung ab.  
Wenn Sie aber welche eingeben, müssen Sie Ihre URLS eintragen. Die hier Beispielhaft gezeigten URLs werden bei Ihnen nicht funktionieren.</p>

<p class="callout success">Klicken Sie nun auf "Registrieren"</p>

### Clientschlüssel anlegen

Klicken Sie unter "Verwalten" auf "Zeritifkate &amp; Geheimnisse". Wählen Sie dort "Neuer geheimer Clientschlüssel".

[![image.png](https://wiki.dedesales.de/uploads/images/gallery/2026-06/scaled-1680-/inaW6xfHY9PmCaqr-image.png)](https://wiki.dedesales.de/uploads/images/gallery/2026-06/inaW6xfHY9PmCaqr-image.png)

Benennen Sie den Schlüssel mit dem Namen "Secret" und wählen eine Dauer von 24 Monaten. Klicken Sie anschließend auf "Hinzufügen.

[![image.png](https://wiki.dedesales.de/uploads/images/gallery/2026-06/scaled-1680-/ejbpCJq6GIPzoFu2-image.png)](https://wiki.dedesales.de/uploads/images/gallery/2026-06/ejbpCJq6GIPzoFu2-image.png)

Nun wird der Geheime Schlüssel in der Spalte "Wert" angezeigt.

[![image.png](https://wiki.dedesales.de/uploads/images/gallery/2026-06/scaled-1680-/t6f3lqcMedGqVkqi-image.png)](https://wiki.dedesales.de/uploads/images/gallery/2026-06/t6f3lqcMedGqVkqi-image.png)

<p class="callout warning">Achtung! Dieser ist nur einmalig sichtbar und muss jetzt kopiert werden, da wir diesen benötigen.</p>

### API-Berechtigungen

Fügen Sie nun die hier gezeigten Berechtigungen hinzu.

1. Klicken Sie auf "Berechtigung hinzufügen"
2. Wählen Sie in Dynamics ERP die unten gezeigten Berechtigung aus.
3. Die Microsoft Graph" User.Read Berechtigung wird ebenfalls benötigt.
4. Klicken Sie auf "Administratoreinwilligung erteilen"

<div drawio-diagram="2324"><img src="https://wiki.dedesales.de/uploads/images/drawio/2026-06/GLMvpcfiO0go8YAD-drawing-8-1780311981.png" alt="GLMvpcfiO0go8YAD-drawing-8-1780311981.png"/></div>

### Anwendungs-ID (Client)

Die Anwendungs-ID finden Sie, wenn Sie auf Übersicht klicken. Die nun erscheinende Anwendungs-ID kopieren, da wir diese benötigen.

## D365 Finance &amp; Operation

### Microsoft Entra ID-Anwendungen

Rufen Sie D365 F&amp;O auf und suchen nach "Microsoft Entra ID-Anwendungen".

<p class="callout info">Z.B. erreichbar unter:  
Module -&gt; Systemverwaltung -&gt; +Alle Erweitern -&gt; unter der Kategorie "Einstellungen-&gt; Microsoft Entra ID-Anwendungen</p>

Legen Sie einen neuen Eintrag an und tragen folgendes ein:

1. Anwendungs-ID
2. Namen wie auch oben angegeben: "DeDeSales API Zugriff"
3. Wählen Sie einen User, unter dessen Context der API Aufruf durch uns erfolgen soll. 
    1. Verwenden Sie ein starkes Kennwort
    2. Wählen Sie <span style="text-decoration:underline;">nicht </span>aus, dass eine Passwort-Änderung beim ersten Aufruf erforderlich ist.
    3. Aktivieren Sie <span style="text-decoration:underline;">kein </span>MFA für den User
    4. Weisen Sie dem User die korrekte Rolle und Rechte zu. Eine Übersicht über den Zugriff auf die erforderlichen Entities erhalten Sie von Ihrem Projektleiter.
    5. Die Rolle "System user" ist Pflicht und muss dem User zugewiesen sein.

<div drawio-diagram="2327"><img src="https://wiki.dedesales.de/uploads/images/drawio/2026-06/dcqIqrju23jImrYy-drawing-8-1780315822.png" alt="dcqIqrju23jImrYy-drawing-8-1780315822.png"/></div>

## Security configuration

Die hier beschriebenen Berechtigungen decken den Standard Connector von DeDeSales ab. Bei individuellen Anpassungen müssen die Berechtigungen entsprechend erweitert werden.

<p class="callout info">Vergessen Sie nicht nach der Anlage die Privileges und Roles zu publishen!</p>

### Privileges

Bitte legen Sie einen neuen Eintrag an: DeDeSales API

#### Entities

Weisen Sie folgende Entitities hinzu geben die entsprechenden Rechte.

<table id="bkmrk-entity-read-update-c" style="border-collapse:collapse;width:100%;height:407.953px;"><colgroup><col style="width:20.0238%;"></col><col style="width:20.0238%;"></col><col style="width:20.0238%;"></col><col style="width:20.0238%;"></col><col style="width:20.0238%;"></col></colgroup><thead><tr style="height:29.7969px;"><td style="height:29.7969px;">Entity</td><td style="height:29.7969px;">Read</td><td style="height:29.7969px;">Update</td><td style="height:29.7969px;">Create</td><td style="height:29.7969px;">Delete</td></tr></thead><tbody><tr style="height:29.7969px;"><td style="height:29.7969px;">CustCustomerV3Entity</td><td style="height:29.7969px;">Grant</td><td style="height:29.7969px;">Unset</td><td style="height:29.7969px;">Unset</td><td style="height:29.7969px;">Unset</td></tr><tr style="height:46.5938px;"><td style="height:46.5938px;">CustomerPaymentMethodEntity</td><td style="height:46.5938px;">Grant</td><td style="height:46.5938px;">Unset</td><td style="height:46.5938px;">Unset</td><td style="height:46.5938px;">Unset</td></tr><tr style="height:29.7969px;"><td style="height:29.7969px;">DeliveryTermsEntity</td><td style="height:29.7969px;">Grant</td><td style="height:29.7969px;">Unset</td><td style="height:29.7969px;">Unset</td><td style="height:29.7969px;">Unset</td></tr><tr style="height:46.5938px;"><td style="height:46.5938px;">EcoResProductBarcodeV3Entity</td><td style="height:46.5938px;">Grant</td><td style="height:46.5938px;">Unset</td><td style="height:46.5938px;">Unset</td><td style="height:46.5938px;">Unset</td></tr><tr style="height:29.7969px;"><td style="height:29.7969px;">EcoResProductV2Entity</td><td style="height:29.7969px;">Grant</td><td style="height:29.7969px;">Unset</td><td style="height:29.7969px;">Unset</td><td style="height:29.7969px;">Unset</td></tr><tr style="height:46.5938px;"><td style="height:46.5938px;">EcoResReleasedProductV2Entity</td><td style="height:46.5938px;">Grant</td><td style="height:46.5938px;">Unset</td><td style="height:46.5938px;">Unset</td><td style="height:46.5938px;">Unset</td></tr><tr style="height:29.7969px;"><td style="height:29.7969px;">InventProductSpecificOrderSettingsV3Entity</td><td style="height:29.7969px;">Grant</td><td style="height:29.7969px;">Unset</td><td style="height:29.7969px;">Unset</td><td style="height:29.7969px;">Unset</td></tr><tr style="height:29.7969px;"><td style="height:29.7969px;">PaymentTermEntity</td><td style="height:29.7969px;">Grant</td><td style="height:29.7969px;">Unset</td><td style="height:29.7969px;">Unset</td><td style="height:29.7969px;">Unset</td></tr><tr style="height:29.7969px;"><td style="height:29.7969px;">SalesOrderHeaderV2Entity</td><td style="height:29.7969px;">Grant</td><td style="height:29.7969px;">Grant</td><td style="height:29.7969px;">Grant</td><td style="height:29.7969px;">Grant</td></tr><tr style="height:29.7969px;"><td style="height:29.7969px;">SalesOrderLineV2Entity</td><td style="height:29.7969px;">Grant</td><td style="height:29.7969px;">Grant</td><td style="height:29.7969px;">Grant</td><td style="height:29.7969px;">Grant</td></tr><tr style="height:29.7969px;"><td style="height:29.7969px;">smmContactPersonV2Entity</td><td style="height:29.7969px;">Grant</td><td style="height:29.7969px;">Grant</td><td style="height:29.7969px;">Grant</td><td style="height:29.7969px;">Grant</td></tr><tr><td>smmEmploymentJobFunctionEntity</td><td>Grant</td><td>Unset</td><td>Unset</td><td>Unset</td></tr></tbody></table>

### Roles

Legen Sie eine Rolle mit dem Namen "DeDeSales API Role" an.

#### Duties

Fügen Sie folgendes hinzu:

- Maintain Contacts

#### Privileges

Fügen Sie folgendes hinzu:

- DeDeSales API
- DeDeSalesPriceDiscountsView

## Abschluss

### Test der API

Die API muss unter der oben angegebenen URL /metadata aufrufbar sein und folgendes Ergebnis liefern. Beispiel: https://usnconeboxax1aos.cloud.onebox.dynamics.com/metadata/DataEntities

[![image.png](https://wiki.dedesales.de/uploads/images/gallery/2026-06/scaled-1680-/7IFrsjSTzYjgJfbu-image.png)](https://wiki.dedesales.de/uploads/images/gallery/2026-06/7IFrsjSTzYjgJfbu-image.png)

### Aus Ihrer Einrichtung heraus benötigen wir

1. Anwendungd-ID
2. Secret
3. TenantId
4. URL