Eseguire l'integrazione con sistemi di esecuzione della produzione di terze parti

Alcune organizzazioni di produzione che utilizzano Microsoft Dynamics 365 Supply Chain Management utilizzare la funzionalità nativa in Dynamics 365 per controllare le attività di produzione per macchine, attrezzature e personale. Tuttavia, altre organizzazioni di produzione, in particolare quelle che hanno requisiti di produzione avanzati, utilizzano invece un sistema di esecuzione della produzione (MES) di terze parti. Le organizzazioni potrebbero scegliere una soluzione MES di terze parti perché, ad esempio, è specificamente adattata al loro settore verticale.

Nella soluzione integrata, lo scambio di dati è completamente automatizzato e avviene quasi in tempo reale. Pertanto, i dati vengono mantenuti aggiornati in entrambi i sistemi e non è richiesta alcuna immissione manuale dei dati. Ad esempio, quando il consumo di materiale viene registrato nel MES, l'integrazione garantisce che lo stesso consumo sia registrato anche in Dynamics 365. Pertanto, i record di inventario aggiornati sono disponibili per altri processi importanti, come la pianificazione e le vendite.

La soluzione rende più veloce, più facile ed economico per gli utenti di Supply Chain Management l'integrazione con MES di terze parti. Offre le seguenti caratteristiche:

  • Eventi aziendali e interfacce che supportano processi chiave di esecuzione della produzione
  • Una dashboard centralizzata in cui è possibile tenere traccia della cronologia di elaborazione degli eventi e risolvere i problemi e correggere i processi che non riescono

La seguente illustrazione mostra una tipica raccolta di eventi aziendali, processi e messaggi scambiati in una soluzione integrata.

Scenario di integrazione tipico.

Attivare la funzione di integrazione MES

Prima di poter utilizzare questa funzione, un amministratore deve attivarla nel sistema come descritto nella procedura seguente.

  1. Accedere a Amministrazione sistema > Imposta > Configurazione licenza.
  2. Assicurati che la chiave di licenza Orario e presenze sia abilitata (mostra un segno di spunta). Questa chiave di licenza è necessaria perché controlla la funzionalità e i dati del sistema di esecuzione della produzione. Se non è abilitata, procedi nel seguente modo:
    1. Mettere il sistema in modalità di manutenzione come descritto in Modalità di manutenzione.
    2. Nella pagina Configurazione della licenza seleziona la casella di controllo Orario e presenze.
    3. Disattiva la modalità di manutenzione come descritto in Modalità di manutenzione
  3. Vai ad Amministrazione sistema > Aree di lavoro > Gestione funzionalità.
  4. Utilizza l'area di lavoro Gestione funzionalità per attivare la funzionalità Integrazione di sistemi di esecuzione della produzione. A partire dalla versione 10.0.29 di Supply Chain Management, questa funzionalità è attivata per impostazione predefinita. A partire dalla versione 10.0.32 di Supply Chain Management, questa funzionalità è obbligatoria e non può essere disabilitata.

Processi disponibili per l'integrazione MES

È possibile abilitare uno o tutti i seguenti processi per l'integrazione.

Nome processo Description
Rilasciare gli ordini di produzione e gli eventi aziendali di modifica dello stato dell'ordine di produzione Questo processo fornisce un evento aziendale che il MES può ascoltare, per ottenere informazioni sugli ordini di produzione che dovrebbero essere prodotti. I dati di riferimento relativi all'ordine di produzione dovrebbero essere condivisi da Supply Chain Management al MES tramite Open Data Protocol (OData) o entità di dati.
Avvia ordine di produzione Questo processo fornisce a Supply Chain Management le informazioni sugli ordini di produzione che vengono avviati utilizzando il MES. Assicura che entrambi i sistemi abbiano una visione aggiornata di tutte le attività di produzione.
Report quantità prodotta o scartata Questo processo fornisce a Supply Chain Management le informazioni sulle quantità di errore e i prodotti finiti segnalati su un processo di produzione utilizzando il MES. Garantisce che i supervisori dell'officina abbiano una visione aggiornata dell'avanzamento del piano di produzione.
Segnalare il consumo di materiali Questo processo fornisce a Supply Chain Management le informazioni dal MES sulle quantità di materiali che vengono consumate. Pertanto, i record di inventario aggiornati sono disponibili per altri processi importanti, come la pianificazione e le vendite.
Segnalare il tempo impiegato per l'operazione Questo processo fornisce a Supply Chain Management informazioni sul tempo utilizzato per un'operazione specifica.
Ordine di produzione finale Questo processo informa Supply Chain Management che il MES ha aggiornato un ordine di produzione al suo stato finale di Terminato. Questo stato indica che non verranno più prodotte quantità nell'ordine di produzione.

Monitorare i messaggi in arrivo

Per monitorare i messaggi MES in arrivo nel sistema, vai a Controllo della produzione > Impostazione > Esecuzione produzione > Integrazione di sistemi esecuzione produzione.

Tutti i messaggi per un ordine di produzione specifico vengono elaborati nella sequenza in cui vengono ricevuti. Tuttavia, i messaggi per ordini di produzione diversi potrebbero non essere elaborati nella sequenza ricevuta perché i lavori batch vengono elaborati in parallelo. In caso di errore, il processo batch tenterà di elaborare ciascun messaggio tre volte prima di impostarlo sullo stato Non riuscito.

La pagina Integrazione di sistemi esecuzione produzione funziona allo stesso modo della pagina Messaggi dell'elaboratore di messaggi e rappresenta funzionalità molto simili. (Mostra anche i messaggi MES oltre ad altri tipi di messaggi.) Per informazioni su come utilizzare entrambe le pagine per rivedere i messaggi, trovare e correggere i messaggi non riusciti e altro, vedi pagina messaggi elaboratore messaggi

Chiamare l'API

Per chiamare l'API di integrazione MES, inviare una richiesta POST al seguente URL dell'endpoint:

/api/services/SysMessageServices/SysMessageService/SendMessage

Il corpo della richiesta inviata dovrebbe essere simile all'esempio seguente. Sostituisci i valori per _companyId, _messageType e _messageContent come richiesto. Per informazioni sui vari tipi di messaggi supportati dall'API e su come progettare il loro contenuto, vedere la sezione successiva.

{
    "_companyId": "USMF",
    "_messageQueue": "JmgMES3P",
    "_messageType": "ProdProductionOrderReportFinished",
    "_messageContent":
    "{\"ProductionOrderNumber\": \"P000123\", \"ReportFinishedLines\": [{\"ItemNumber\": \"A0001\", \"ReportedGoodQuantity\": 10, \"ReportAsFinishedDate\": \"2021-01-01\"}]}"
}

Tipi e contenuto dei messaggi API

Questa sezione descrive ogni tipo di messaggio che può essere scambiato tramite l'API di integrazione MES.

Messaggio Avvia ordine di produzione

Per il messaggio Avvia ordine di produzione, il valore _messageType è ProdProductionOrderStart. La tabella seguente mostra i campi supportati da questo messaggio.

Nome campo Status Tipo
ProductionOrderNumber Obbligatorio String
StartedQuantity Facoltativo Real
StartedDate Facoltativo Data
AutomaticBOMConsumptionRule Facoltativo Enum (FlushingPrincip | Always | Never)

Messaggio dichiarazione di finito

Per il messaggio dichiara come finito, il valore _messageType è ProdProductionOrderReportFinished. La tabella seguente mostra i campi supportati da questo messaggio.

Nome campo Status Tipo
ProductionOrderNumber Obbligatorio String
ReportFinishedLines Obbligatorio Un elenco di righe (almeno una), ognuna delle quali contiene il payload descritto nella tabella successiva

La tabella seguente mostra i campi che ogni riga nella sezione ReportFinishedLines del messaggio ProdProductionOrderReportFinished supporta.

Nome campo Status Tipo
LineNumber Facoltativo Real
ItemNumber Facoltativo String
ProductionType Facoltativo Enum (MainItem | Formula | BOM | Co_Product | By_Product | None), extensible
ReportedErrorQuantity Facoltativo Real
ReportedGoodQuantity Facoltativo Real
ReportedErrorCatchWeightQuantity Facoltativo Real
ReportedGoodCatchWeightQuantity Facoltativo Real
AcceptError Facoltativo Enum (Yes | No)
ErrorCause Facoltativo Enum (None | Material | Machine | OperatingStaff), estendibile
ExecutedDateTime Facoltativo Data/Ora
ReportAsFinishedDate Facoltativo Data
AutomaticBOMConsumptionRule Facoltativo Enum (FlushingPrincip | Always | Never)
AutomaticRouteConsumptionRule Facoltativo Enum (RouteDependent | Always | Never)
RespectFlushingPrincipleDuringOverproduction Facoltativo Enum (Yes | No)
ProductionJournalNameId Facoltativo String
PickingListProductionJournalNameId Facoltativo String
RouteCardProductionJournalNameId Facoltativo String
FromOperationNumber Facoltativo Numero intero
ToOperationNumber Facoltativo Numero intero
InventoryLotId Facoltativo String
BaseValue Facoltativo String
EndJob Facoltativo Enum (Yes | No)
EndPickingList Facoltativo Enum (Yes | No)
EndRouteCard Facoltativo Enum (Yes | No)
PostNow Facoltativo Enum (Yes | No)
AutoUpdate Facoltativo Enum (Yes | No)
ProductColorId Facoltativo String
ProductConfigurationId Facoltativo String
ProductSizeId Facoltativo String
ProductStyleId Facoltativo String
ProductVersionId Facoltativo String
ItemBatchNumber Facoltativo String
ProductSerialNumber Facoltativo String
LicensePlateNumber Facoltativo String
InventoryStatusId Facoltativo String
ProductionWarehouseId Facoltativo String
ProductionSiteId Facoltativo String
ProductionWarehouseLocationId Facoltativo String
InventoryDimension1 a InventoryDimension12 Facoltativo String

Le 12 dimensioni estensibili (InventoryDimension1 attraverso InventoryDimension12) richiedono la personalizzazione e non vengono sempre utilizzati. Per ulteriori informazioni, vedere Aggiungere nuove dimensioni di inventario tramite estensione.

Messaggio sul consumo di materiale (distinta di prelievo)

Per il messaggio sul consumo di materiale (distinta di prelievo), il valore _messageType è ProdProductionOrderPickingList. La tabella seguente mostra i campi supportati da questo messaggio.

Nome campo Status Tipo
ProductionOrderNumber Obbligatorio String
JournalNameId Facoltativo String
PickingListLines Obbligatorio Un elenco di righe (almeno una), ognuna delle quali contiene il payload descritto nella tabella successiva

La tabella seguente mostra i campi che ogni riga nella sezione PickingListLines del messaggio ProdProductionOrderPickingList supporta.

Nome campo Status Tipo
ItemNumber Obbligatorio String
ConsumptionBOMQuantity Facoltativo Real
ProposalBOMQuantity Facoltativo Real
ScrapBOMQuantity Facoltativo Real
BOMUnitSymbol Facoltativo String
ConsumptionInventoryQuantity Facoltativo Real
ProposalInventoryQuantity Facoltativo Real
ConsumptionCatchWeightQuantity Facoltativo Real
ProposalCatchWeightQuantity Facoltativo Real
ConsumptionDate Facoltativo Data
OperationNumber Facoltativo Numero intero
LineNumber Facoltativo Real
PositionNumber Facoltativo String
IsConsumptionEnded Facoltativo Enum (Yes | No)
ErrorCause Facoltativo Enum (None | Material | Machine | OperatingStaff), estendibile
InventoryLotId Facoltativo String

Messaggio di tempo impiegato per l'operazione (scheda di percorso)

Per il messaggio sul tempo impiegato per l'operazione (scheda di percorso), il valore _messageType è ProdProductionOrderRouteCard. La tabella seguente mostra i campi supportati da questo messaggio.

Nome campo Status Tipo
ProductionOrderNumber Obbligatorio String
JournalNameId Facoltativo String
RouteCardLines Obbligatorio Un elenco di righe (almeno una), ognuna delle quali contiene il payload descritto nella tabella successiva

La tabella seguente mostra i campi che ogni riga nella sezione RouteCardLines del messaggio ProdProductionOrderRouteCard supporta.

Nome campo Status Tipo
OperationNumber Obbligatorio Numero intero
OperationPriority Facoltativo Enum (Primary | Secondary1 | Secondary2 | ... | Secondary20)
OperationId Facoltativo String
OperationsResourceId Facoltativo String
Worker Facoltativo String
HoursRouteCostCategoryId Facoltativo String
QuantityRouteCostCategoryId Facoltativo String
HourlyRate Facoltativo Real
Hours Facoltativo Real
GoodQuantity Facoltativo Real
ErrorQuantity Facoltativo Real
CatchWeightGoodQuantity Facoltativo Real
CatchWeightErrorQuantity Facoltativo Real
QuantityPrice Facoltativo Real
ProcessingPercentage Facoltativo Real
ConsumptionDate Facoltativo Data
TaskType Facoltativo Enum (QueueBefore | Setup | Process | Overlap | Transport | QueueAfter | Burden)
ErrorCause Facoltativo Enum (None | Material | Machine | OperatingStaff), estendibile
OperationCompleted Facoltativo Enum (Yes | No)
BOMConsumption Facoltativo Enum (Yes | No)
ReportAsFinished Facoltativo Enum (Yes | No)

Messaggio Termina ordine di produzione

Per il messaggio Termina ordine di produzione, il valore _messageType è ProdProductionOrderEnd. La tabella seguente mostra i campi supportati da questo messaggio.

Nome campo Status Tipo
ProductionOrderNumber Obbligatorio String
ExecutedDateTime Facoltativo Data/Ora
EndedDate Facoltativo Data
UseTimeAndAttendanceCost Facoltativo Enum (Yes | No)
AutoReportAsFinished Facoltativo Enum (Yes | No)
AutoUpdate Facoltativo Enum (Yes | No)

Altre informazioni sulla produzione

I messaggi supportano azioni o eventi che si verificano nell'area di produzione. Vengono elaborati utilizzando il framework di integrazione MES descritto in questo articolo. Il progetto presuppone che altre informazioni di riferimento da condividere con il MES, come le informazioni relative al prodotto, o la distinta base o il percorso (con i suoi tempi di impostazione e configurazione specifici) utilizzate in uno specifico ordine di produzione vengano recuperate dal sistema usando le entità di dati tramite trasferimento file oppure OData.

Ricevere il feedback sullo stato di un messaggio

Dopo che il MES ha inviato un messaggio a Supply Chain Management, potrebbe essere importante per Supply Chain Management restituire un feedback sullo stato del messaggio. Di seguito sono riportati alcuni esempi di casi in cui tale comportamento può risultare utile:

  • Non esiste una persona responsabile della supervisione costante dell'integrazione MES.
  • La persona responsabile della supervisione dell'integrazione MES desidera essere informata via e-mail quando un messaggio non riesce, in modo che sappia che deve agire.
  • Il MES deve mostrare un messaggio di errore per informare l'operatore dell'officina o qualcuno del reparto IT che devono agire.
  • Il MES deve ricalcolare la pianificazione dell'ordine dopo aver ricevuto un messaggio di errore (ad esempio, perché un ordine di produzione non è stato avviato).

In questi casi, puoi sfruttare la funzionalità di avviso standard in Supply Chain Management. Per informazioni sul funzionamento degli avvisi standard, vedere le seguenti risorse:

Ad esempio, potresti impostare i seguenti avvisi per fornire un feedback sullo stato di un messaggio:

  • Crea un evento aziendale ("Invia esternamente") che viene utilizzato quando un messaggio è Non riuscito.
  • Invia una notifica e un messaggio e-mail all'amministratore IT o al responsabile del piano di produzione.