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.
Attivare la funzione di integrazione MES
Prima di poter utilizzare questa funzione, un amministratore deve attivarla nel sistema come descritto nella procedura seguente.
- Accedere a Amministrazione sistema > Imposta > Configurazione licenza.
- 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:
- Mettere il sistema in modalità di manutenzione come descritto in Modalità di manutenzione.
- Nella pagina Configurazione della licenza seleziona la casella di controllo Orario e presenze.
- Disattiva la modalità di manutenzione come descritto in Modalità di manutenzione
- Vai ad Amministrazione sistema > Aree di lavoro > Gestione funzionalità.
- 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) |
JournalNameId |
Facoltativo | String |
PickingListJournalNameId |
Facoltativo | String |
RouteCardJournalNameId |
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:
- Articolo della guida: Panoramica degli avvisi
- Video: Opzioni per le regole di avviso nelle app per la finanza e le operazioni
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.