Integrazione Microsoft Dynamics

  • Home
  • Integrazione Microsoft Dynamics

Collega Microsoft Dynamics 365 a Spark per usare dati finance/sales/operations (es. ricavi, DSO, ordini, opportunità) come base oggettiva per obiettivi, valutazioni e reporting.

Cosa sincronizziamo

  • Ricavi/fatture/DSO (Dynamics 365 Finance → Spark, orario/notturno)

  • Ordini/commesse (Finance/SCM → Spark, orario/notturno)

  • Centri di costo / dimensioni contabili (Finance → Spark, notturno)

  • Opportunità / pipeline / win-rate (Sales (Dataverse) → Spark, orario/notturno)

  • Account/Clienti (metadati per filtri/permessi) (Sales → Spark, notturno)

A cosa serve

  • MBO guidato dai numeri: ricavi, margini, DSO e pipeline aggiornati automaticamente.

  • Governance e permessi: viste e KPI per centro di costo, BU o area commerciale.

  • Previsioni e payout: forecast e bonus calcolati con dati unici e tracciati.

  • Zero export manuali: job pianificati con controlli e log.

Come si configura (3 step)

  1. Prerequisiti

    • Microsoft Entra ID: App Registration (client id/secret/cert), Service Principal.

    • Permessi API su Dataverse (Dynamics 365 Sales) e/o Finance & Operations (OData).

    • (Se richiesto) IP allowlist; workspace/report già pubblicati se usi Power BI a valle.

  2. Lato Dynamics

    • Abilita accesso applicativo: assegna il Service Principal all’ambiente Dataverse e/o all’istanza Finance.

    • Raccogli tenantId, clientId, org URL (Dataverse), hostname F&O, entity names (es. CustInvoiceJour, SalesOrderHeaderV2, Opportunity).

    • Definisci view/campi necessari (date, importi, dimensioni contabili).

  3. Lato Spark

    • Inserisci credenziali/endpoint, mappa i campi, avvia import pilota su un’OU di test.

    • Pianifica job notturni (master data) e orari (KPI operativi).

Sicurezza & controllo accessi

  • Autenticazione: OAuth2 (Entra ID) con Service Principal; token a tempo.

  • SSO su Spark: SAML/OIDC (Google/Microsoft/Okta). SCIM: (opzionale, via IdP).

  • Cifratura in transito/a riposo, audit log, principio del least privilege (scope minimi).

Mappature chiave

Campo Dynamics (API)Campo SparkTipoNote
customerAccount / accountidcustomer_idstringchiave cliente (Finance/Sales)
invoiceAmount / actualrevenueamount_eurnumbernormalizza valuta in EUR
invoiceDate / actualclosedatedatedateISO 8601, usato per periodo KPI
salesOrderNumber / nameorder/opptystringriferimento documento/opportunità
salesUnitId / businessunitidorg_unitstringmapping su BU/area commerciale
defaultDimension (Finance)cost_centerstringestrai CC da dimensioni contabili
ownerid (Sales)owner_emailstringrisolto su email utente Spark
probability (Sales)kpi_valuenumberper KPI pipeline/win-rate

Endpoints / API

  • Dataverse (Dynamics 365 Sales): Web API OData v4 (/api/data/v9.2/…) per accounts, opportunities, users, ecc.

  • Dynamics 365 Finance & Operations: OData (/data/…) per entità come CustInvoiceJour, CustomerAgingSnapshot, SalesOrderHeaderV2.

  • Webhook/CSV SFTP (opz.): per carichi massivi o ambienti con policy restrittive.

Direzione, frequenza, limiti

  • Direzione: Pull Dynamics → Spark (default). Push Spark → Dynamics (non previsto; opzionale via export file).

  • Frequenza: orario per KPI operativi; notturno per master data e dimensioni.

  • Rate limits/quote: rispettare limiti Dataverse/F&O; usare paginazione, batch e retry/backoff su 429.

Limitazioni & note

  • Dimensioni contabili (Finance) richiedono estrazione del cost center da defaultDimension.

  • Valute: normalizza in Spark (FX di riferimento) per confronti omogenei.

  • Campi custom: disponibili se pubblicati in API o inclusi in view.

  • Gerarchie: supporto fino a 6 livelli (org unit/BU/area).

Troubleshooting rapido

  • AADSTS50011 (redirect): controlla Redirect URI nell’App Registration.

  • 403 “insufficient privileges”: abilita il Service Principal su ambiente Dataverse/F&O e assegna i ruoli.

  • 429 throttling: riduci burst, usa batch e retry esponenziale, pianifica fuori orari di punta.

  • Mancata risoluzione owner/BU: mappa utenti/BU da Entra/Dataverse e sincronizza prima le master data.

  • Cost center vuoto: verifica configurazione dimensioni e includi il CC nel select/expand.