What is OData in d365fo?

OData i Dynamics 365 FO: En Komplet Guide

07/11/2004

Rating: 4.51 (5725 votes)

Integration er en afgørende del af moderne forretningssystemer, og Dynamics 365 Finance and Operations (D365FO) er ingen undtagelse. En af de mest almindelige metoder til at interagere med data i D365FO er gennem OData (Open Data Protocol). Denne protokol fungerer som en standardiseret bro mellem dit D365FO-miljø og eksterne applikationer, hvilket muliggør problemfri dataudveksling. Denne artikel giver en dybdegående gennemgang af, hvad OData er, hvordan det fungerer inden for D365FO, dets kernefunktioner, fordele og ulemper, samt hvordan man praktisk anvender det til at bygge robuste integrationer.

What is OData in d365fo?
Odata is an open source protocol to serve and consume interoperable data using common query operations with RESTful APIs. D365FO exposes all its public data entities as OData endpoints which can then be accessed using following URI format : OData provides a quick, codeless data integration method with many data query options and CRUD operations.
Indholdsfortegnelse

Hvad er OData og Data Entities?

For at forstå OData i D365FO er det vigtigt først at definere to centrale begreber: selve OData-protokollen og Data Entities, som protokollen interagerer med.

OData (Open Data Protocol) er en webprotokol baseret på REST (Representational State Transfer), designet til at skabe og forbruge data-API'er. Den standardiserer den måde, data forespørges og manipuleres på over internettet ved hjælp af almindelige HTTP-metoder. OData er bygget til at understøtte såkaldte CRUD-operationer, som står for:

  • Create (Opret): Tilføjelse af nye data.
  • Read (Læs): Hentning af eksisterende data.
  • Update (Opdater): Ændring af eksisterende data.
  • Delete (Slet): Fjernelse af data.

Protokollen anvender standard webteknologier som HTTP og JSON (JavaScript Object Notation), hvilket gør den let at integrere med næsten enhver moderne applikation eller platform.

Data Entities i D365FO er en fundamental byggesten for integration. En Data Entity er en abstraktion over den fysiske databasestruktur. I stedet for at skulle arbejde direkte med komplekse, normaliserede databasetabeller, tilbyder en Data Entity en forenklet og de-normaliseret repræsentation af et forretningskoncept. For eksempel kan en 'Vendor' (Kreditor) Data Entity samle information fra flere forskellige tabeller (såsom kreditordetaljer, adresser, kontaktinformation) i én samlet, flad struktur. Dette gør det markant lettere for udviklere at læse og skrive data uden at skulle kende den underliggende, komplekse datamodel. Når en Data Entity i D365FO markeres som 'Public', bliver den automatisk tilgængelig som et OData-endpoint, klar til at blive brugt af eksterne systemer.

How to write OData queries in Dynamics 365?
Select the gear settings icon and select ‘Advanced Query Builder’. In the space, you can start writing your OData queries and click on the preview button to get the results. Details on how to write OData queries is given in the ‘Requesting Data’ section below. To effectively use OData with Dynamics 365, understanding the metadata is crucial.

Kernefunktioner og Forespørgselsmuligheder i OData

OData's styrke ligger i dets rige sæt af forespørgselsmuligheder, der giver klienter mulighed for at forme og filtrere data direkte i URL'en. Dette minimerer mængden af data, der sendes over netværket, og reducerer behandlingen på klientsiden. D365FO understøtter en række standard OData-query options.

CRUD-operationer via HTTP-verber

OData mapper CRUD-operationer direkte til HTTP-metoder:

  • POST: Anvendes til at oprette en ny post (Create).
  • GET: Anvendes til at læse data (Read).
  • PATCH/PUT: Anvendes til at opdatere en eksisterende post (Update). PATCH opdaterer kun de specificerede felter, mens PUT erstatter hele posten.
  • DELETE: Anvendes til at slette en post (Delete).

System Query Options

Disse optioner tilføjes som parametre til URL'en for at manipulere det returnerede datasæt.

Query OptionBeskrivelseEksempel (URL-fragment)
$filterFiltrerer resultater baseret på en specificeret betingelse. Svarer til en WHERE-sætning i SQL./data/PurchaseOrderHeadersV2?$filter=PurchaseOrderNumber eq 'PO-001'
$selectVælger kun specifikke felter (properties) fra en entity. Reducerer payload-størrelsen./data/PurchaseOrderHeadersV2?$select=PurchaseOrderNumber,OrderVendorAccountNumber
$orderbySorterer resultaterne i stigende (asc) eller faldende (desc) rækkefølge./data/PurchaseOrderHeadersV2?$orderby=PurchaseOrderNumber desc
$topBegrænser antallet af returnerede poster til de første N./data/PurchaseOrderHeadersV2?$top=10
$skipSpringer de første N poster over, nyttigt for paginering./data/PurchaseOrderHeadersV2?$skip=20
$expandInkluderer data fra relaterede entities i samme forespørgsel. Svarer til en JOIN i SQL./data/SalesOrderHeaders?$expand=SalesOrderLines
$countReturnerer antallet af poster, der matcher forespørgslen./data/PurchaseOrderHeadersV2?$count=true

Praktisk Anvendelse: Opsætning og Autentificering

For at kunne kommunikere med D365FO's OData-endpoints skal en ekstern applikation først autentificeres. Dette sker via Azure Active Directory (AAD), som fungerer som identitetsudbyder for D365FO.

Trin til Autentificering

  1. Registrer en applikation i Azure AD: Først skal du oprette en ny app-registrering i din Azure AD-tenant. Denne registrering vil give dig et 'Application (client) ID' og mulighed for at oprette en 'Client Secret'. Disse to værdier fungerer som applikationens brugernavn og adgangskode.
  2. Giv adgang til D365FO: I Azure AD skal du give den registrerede applikation tilladelse til at tilgå Dynamics ERP API'en.
  3. Registrer AAD-applikationen i D365FO: Gå til Systemadministration > Opsætning > Azure Active Directory-applikationer i D365FO. Her skal du tilføje dit 'Application ID' fra Azure AD og tildele det en D365FO-bruger. De tilladelser, applikationen har, vil være de samme som den tildelte brugers.

Når opsætningen er fuldført, kan din applikation anmode om et adgangstoken fra Azure AD. Dette gøres ved at sende en POST-forespørgsel til AAD's token-endpoint med dit client ID, client secret og D365FO-miljøets URL som 'resource'. Det returnerede adgangstoken skal derefter inkluderes som et 'Bearer token' i 'Authorization'-headeren på alle efterfølgende OData-kald.

What is OData in Dynamics 365?
oData: Open Data Protocol (OData) is a standard protocol for consuming data exposed by Dynamics 365 for Operations. OData is a new Representational State Transfer (REST) based protocol for CRUD operations – C-Create, R-Read, U-Update and D-Delete – that allows for integrating with Dynamics 365 for Operations.

Forespørgsler på tværs af selskaber (Cross-Company)

Som standard returnerer en OData-forespørgsel kun data fra den brugerdefinerede standardvirksomhed. For at hente data fra alle virksomheder, som brugeren har adgang til, skal du tilføje parameteren ?cross-company=true til din URL. Hvis du ønsker at filtrere på en specifik virksomhed, der ikke er din standard, kan du kombinere dette med et $filter på feltet dataAreaId.

Eksempel: https://[baseURI]/data/CustomersV3?$filter=dataAreaId eq 'usmf'&cross-company=true

Fordele og Ulemper ved at bruge OData

Selvom OData er et kraftfuldt værktøj, er det ikke altid den bedste løsning til alle integrationsscenarier. Det er vigtigt at kende både styrkerne og svaghederne.

Fordele

  • Standardiseret og åbent: Som en åben protokol er OData bredt understøttet og let at implementere i mange forskellige teknologier.
  • Nem at bruge: Den REST-baserede tilgang og de simple query options gør det hurtigt at komme i gang med simple dataoperationer.
  • Klar til brug med tredjepartssoftware: Værktøjer som Microsoft Power BI, Excel og mange andre kan direkte forbinde til D365FO's OData-endpoints uden behov for kodning.
  • Fleksible forespørgsler: Klienten har fuld kontrol over, hvilke data der hentes, hvilket kan optimere ydeevnen ved at reducere datamængden.

Ulemper

  • Ydeevne: OData kan være langsom, især når man arbejder med store mængder data. Hver forespørgsel behandles interaktivt, hvilket kan belaste serveren. Det er ikke designet til bulk-operationer.
  • Begrænset til simpel forretningslogik: OData er bedst til simple CRUD-operationer. Kompleks forretningslogik, valideringer eller operationer, der involverer flere trin, er svære at implementere. I sådanne tilfælde skal logikken ofte placeres i klientapplikationen.
  • Ikke egnet til store datamængder: Til integration af store datasæt er andre metoder som Data Management Framework (DMF) langt mere effektive. OData har en sidebegrænsning (typisk 1.000 poster pr. kald), hvilket kræver paginering for større resultatsæt.

Alternativer til OData-integration

Afhængigt af dine behov findes der flere andre integrationsmetoder i D365FO:

MetodeBedst egnet tilKort beskrivelse
Custom ServicesKompleks forretningslogik og operationelle integrationer (f.eks. postering af en ordre).Tillader udvikling af egne services i X++, hvilket giver maksimal fleksibilitet og ydeevne.
Data Management Framework (DMF)Asynkron import og eksport af store datamængder (bulk data).Platform til at håndtere filbaseret import/eksport via Data Entities. Understøtter staging og validering.
Recurring IntegrationsAutomatiseret og planlagt udveksling af filer.Bygger oven på DMF og tilbyder REST API'er til at skubbe og trække datafiler fra en kø.
Business EventsRealtidsnotifikationer og trigger-baserede workflows.Sender notifikationer til eksterne systemer (f.eks. Azure Logic Apps), når specifikke hændelser sker i D365FO.
Dual-writeTæt koblet, næsten realtids synkronisering med Dataverse (Power Platform).Sikrer, at data holdes synkroniseret mellem D365FO og Microsoft Dataverse.

Ofte Stillede Spørgsmål (OSS)

Hvad er den største begrænsning ved at bruge OData med D365FO?
Den primære begrænsning er ydeevnen. OData er ikke optimeret til store datamængder eller komplekse forespørgsler og kan blive en flaskehals i performance-kritiske scenarier.
Kan jeg bruge OData til at overføre tusindvis af poster på én gang?
Det er ikke anbefalet. OData er bedst til interaktive, mindre forespørgsler. Til bulk-dataoverførsler bør du bruge Data Management Framework (DMF) for at opnå bedre ydeevne og stabilitet.
Er det nødvendigt at være udvikler for at bruge OData?
For simple dataudtræk i værktøjer som Power BI eller Excel kræves der ingen kodning. Men for at bygge en egentlig applikationsintegration, der håndterer autentificering og udfører CRUD-operationer, er programmeringskendskab (f.eks. i C#) nødvendigt.
Hvordan fungerer OData med D365FO's sikkerhedsmodel?
OData respekterer fuldt ud D365FO's sikkerhedsroller og -tilladelser. Den bruger, der er knyttet til AAD-applikationen, bestemmer, hvilke data og operationer applikationen har adgang til. Hvis brugeren ikke har tilladelse til at se en bestemt Data Entity, vil OData-kaldet fejle.

Konklusion

OData er en essentiel og tilgængelig teknologi for integration med Dynamics 365 Finance and Operations. Den tilbyder en standardiseret, REST-baseret metode til at udføre grundlæggende dataoperationer, hvilket gør den ideel til simple integrationer, ad-hoc dataudtræk og forbindelse til OData-klare applikationer. Men det er afgørende at forstå dens begrænsninger, især med hensyn til ydeevne og håndtering af kompleks logik. Ved at vælge det rigtige integrationsværktøj til opgaven – hvad enten det er OData for enkelhedens skyld eller DMF for volumen – kan du sikre, at dine D365FO-integrationer er både effektive og robuste.

Hvis du vil læse andre artikler, der ligner OData i Dynamics 365 FO: En Komplet Guide, kan du besøge kategorien Teknologi.

Go up