Votre template de données de planification de production
Votre template de données de planification de production
- Attributs recommandés à collecter
- Activités clés à suivre
- Guide d'extraction pour Microsoft Dynamics 365 Manufacturing
Attributs de Planification de Production
| Nom | Description | ||
|---|---|---|---|
| Ordre de Production ProductionOrderNumber | L'identifiant unique d'un ordre de production, servant d'ID de cas principal pour le suivi de toutes les activités de planification et d'exécution associées. | ||
| Description Le Numéro d'Ordre de Production, souvent désigné sous le nom de ProdId dans Microsoft Dynamics 365, est l'identifiant central qui relie tous les événements, matériaux, ressources et coûts associés à un travail de fabrication spécifique. Il permet une analyse complète de bout en bout du cycle de vie de la planification et de l'exécution de la production pour une seule unité de travail. En Process Mining, cet attribut est essentiel pour regrouper les événements liés en un seul cas. L'analyse des processus par Numéro d'Ordre de Production aide à identifier les goulots d'étranglement, les retards et les déviations dans le flux de production standard, depuis la création initiale et l'ordonnancement jusqu'à l'achèvement et la comptabilisation des coûts. Pourquoi c'est important Ceci est l'identifiant de cas fondamental, qui est essentiel pour regrouper tous les événements liés et reconstruire le processus de planification de production de bout en bout pour l'analyse. Où obtenir Ceci est le champ 'ProdId' dans la table 'ProdTable' de Microsoft Dynamics 365 Manufacturing. Exemples WO-000456WO-000457WO-000458 | |||
| Dernière mise à jour des données LastDataUpdate | L'`horodatage` indiquant la dernière `actualisation` ou `extraction` des `données` de cet `événement` depuis le `système source`. | ||
| Description Cet attribut fournit la date et l'heure de la dernière extraction de données du système source. C'est un champ de métadonnées crucial pour comprendre l'actualité et la pertinence de l'analyse. Savoir quand les données ont été mises à jour pour la dernière fois aide les analystes et les utilisateurs métier à faire confiance aux informations dérivées de l'outil de Process Mining. Cela clarifie si les tableaux de bord reflètent des informations en temps réel ou des données d'un point antérieur dans le temps, ce qui est important pour la prise de décision opérationnelle. Pourquoi c'est important Cet attribut est vital pour la gouvernance des données, garantissant que les utilisateurs comprennent l'actualité des données et peuvent se fier à la pertinence des informations du processus. Où obtenir Cet horodatage est généré et apposé sur chaque enregistrement pendant le processus d'extraction, de transformation et de chargement (ETL) des données. Exemples 2023-05-20T05:00:00Z2023-05-21T05:00:00Z | |||
| Heure de l'événement EventTime | L'`horodatage` précis indiquant quand l'`activité` s'est produite. | ||
| Description L'heure de l'événement, ou horodatage, enregistre la date et l'heure exactes auxquelles une activité spécifique a eu lieu. Ces données sont fondamentales pour toutes les analyses Process Mining basées sur le temps, y compris le calcul des temps de cycle, l'identification des retards entre les étapes et la compréhension de la performance du processus au fil du temps. Dans le contexte de la planification de la production, cet attribut est utilisé pour mesurer des durées telles que le délai de planification, les retards de démarrage de la production et le temps global d'exécution des commandes. Des horodatages précis et chronologiques sont essentiels pour construire un modèle de processus correct et significatif. Pourquoi c'est important Cet horodatage est essentiel pour ordonner les événements, calculer les durées entre les activités et effectuer toute analyse basée sur le temps, comme le temps de cycle et l'identification des goulots d'étranglement. Où obtenir Trouvé dans diverses tables de transactions, telles que 'createdDateTime' dans 'ProdTable', ou des champs de date de transaction dans 'ProdRouteTrans', 'ProdJournalRoute' et 'ProdJournalBOM'. Exemples 2023-04-15T09:00:12Z2023-04-15T11:30:00Z2023-04-16T14:22:05Z | |||
| Nom de l'activité ActivityName | Le nom de l'événement commercial ou de l'étape spécifique qui s'est produit dans le processus de planification de production. | ||
| Description Le Nom de l'Activité décrit une étape unique dans le cycle de vie de la planification de production, comme 'Ordre de Production Créé', 'Matériaux Préparés pour la Production' ou 'Production Démarrée'. Ces activités sont les éléments constitutifs de la carte des processus. L'analyse de la séquence et de la durée de ces activités permet la visualisation du flux de processus, l'identification des chemins communs, la détection des boucles de retravail et la mesure du temps passé dans différentes étapes. Cet attribut est crucial pour comprendre ce qui se passe à chaque point du processus. Pourquoi c'est important Cet attribut définit les étapes du processus, permettant la construction d'une carte des processus et l'analyse du flux de processus, des variations et des goulots d'étranglement. Où obtenir Cette valeur est généralement dérivée des journaux d'événements ou en mappant différents changements de statut et types de transactions dans des tables comme 'ProdRouteTrans', 'ProdJournalBOM', et les changements dans les champs de statut de la 'ProdTable'. Exemples Ordre de Production CrééOrdre de Production LibéréProduction DémarréeProduction Déclarée Comme Terminée | |||
| Système source SourceSystem | Le système d'enregistrement à partir duquel les données ont été extraites. | ||
| Description Cet attribut identifie le système d'information source d'où proviennent les données d'événement. Pour cette vue de processus, la valeur serait constamment 'Microsoft Dynamics 365 Manufacturing'. Dans les environnements avec plusieurs systèmes intégrés, ce champ est crucial pour la lignée des données, le dépannage des problèmes de qualité des données et la compréhension de la manière dont les différents systèmes contribuent au processus global. Il assure la clarté sur l'origine des données analysées. Pourquoi c'est important Il fournit un contexte crucial sur l'origine des données, ce qui est essentiel pour la gouvernance des données, la validation et la gestion des pipelines de données provenant de plusieurs systèmes d'entreprise. Où obtenir Ceci est une valeur statique qui doit être ajoutée pendant le processus d'extraction et de transformation des données pour étiqueter l'origine de l'ensemble de données. Exemples Microsoft Dynamics 365 ManufacturingD365 F&O | |||
| Date de début planifiée PlannedStartDate | La date et l'heure auxquelles l'ordre de production est planifié pour commencer. | ||
| Description La Date de Début Planifiée est un résultat clé du processus d'ordonnancement, représentant l'heure cible de début des activités de production pour une commande. Cette date est déterminée en fonction de la disponibilité des matériaux, de la capacité des ressources et des délais de la demande. Cet attribut est essentiel pour l'analyse du respect des délais. En comparant la Date de Début Planifiée avec l'heure de début réelle de la production (à partir de l'horodatage de l'activité 'Production Démarrée'), les organisations peuvent mesurer la ponctualité, identifier les causes des retards et calculer des KPI comme le Taux de Respect du Calendrier de Production. Pourquoi c'est important Il sert de référence pour mesurer le respect du planning et identifier les retards entre la planification et le démarrage réel de la production. Où obtenir Ceci est le champ 'SchedStart' dans la table 'ProdTable'. Exemples 2023-04-18T08:00:00Z2023-04-19T08:00:00Z2023-04-20T08:00:00Z | |||
| Date de fin prévue PlannedEndDate | La date et l'heure auxquelles l'ordre de production est planifié pour être terminé. | ||
| Description La Date de Fin Planifiée est la date d'achèvement cible pour un ordre de production, telle que déterminée par le moteur d'ordonnancement. Elle prend en compte les temps d'opération, les calendriers de ressources et les délais pour prévoir quand les produits finis seront prêts. Dans l'analyse des processus, cet attribut est crucial pour évaluer la performance en matière de respect des délais. La comparaison de la Date de Fin Planifiée avec l'horodatage d'achèvement réel (de l'activité 'Production Déclarée comme Terminée' ou 'Ordre de Production Terminé') permet le calcul du KPI 'Taux d'Achèvement de Production à Temps' et aide à identifier les raisons systémiques des livraisons tardives. Pourquoi c'est important Cet attribut est la référence pour mesurer les taux d'achèvement à temps et analyser la précision de l'ordonnancement de la production. Où obtenir Ceci est le champ 'SchedEnd' dans la table 'ProdTable'. Exemples 2023-04-25T17:00:00Z2023-04-26T17:00:00Z2023-04-27T17:00:00Z | |||
| Numéro de produit ProductNumber | L'identifiant unique de l'article en cours de fabrication. | ||
| Description Le Numéro de Produit, ou ID d'Article, spécifie le produit fini que l'ordre de production est censé créer. Il relie le processus de production au produit spécifique fabriqué, ainsi qu'à sa nomenclature associée et à ses instructions de routage. L'analyse du processus par Numéro de Produit aide à découvrir les variations spécifiques au produit dans le cycle de vie de la fabrication. Elle peut révéler que certains produits ont des temps de cycle plus longs, nécessitent plus de retravail ou subissent des retards plus fréquents, fournissant des informations précieuses aux ingénieurs produit et processus. Pourquoi c'est important Il permet d'analyser les variations de processus en fonction du produit fabriqué, aidant à identifier les goulots d'étranglement ou les problèmes de qualité spécifiques aux produits. Où obtenir Ceci est le champ 'ItemId' dans la table 'ProdTable'. Exemples FG-1001FG-2050ASSY-500B | |||
| Priorité de Production ProductionPriority | Une évaluation qui indique l'urgence ou la priorité de l'ordre de production. | ||
| Description La Priorité de Production est un champ utilisé par les planificateurs et les ordonnanceurs pour gérer la séquence de travail sur l'atelier. Les commandes à priorité plus élevée peuvent être accélérées, perturbant potentiellement le calendrier planifié pour d'autres commandes. L'analyse de cet attribut aide à comprendre la fréquence à laquelle les plans de production sont perturbés par des commandes à haute priorité ou accélérées. Le suivi des changements de priorité tout au long du cycle de vie d'une commande peut mettre en évidence l'instabilité de la demande ou de la planification. C'est essentiel pour le tableau de bord 'Tendances de production accélérée' et l'indicateur clé de performance (KPI) 'Taux de production accélérée'. Pourquoi c'est important Cela aide à identifier la fréquence et l'impact des commandes accélérées, ce qui peut indiquer une instabilité de la planification ou une gestion opérationnelle réactive. Où obtenir Ceci peut être un champ standard ou personnalisé sur la table 'ProdTable'. La configuration est souvent spécifique à l'entreprise. Exemples NormalÉlevéUrgent | |||
| Quantité réelle ActualQuantity | La quantité de biens produits avec succès et déclarés comme terminés pour la commande. | ||
| Description La Quantité Réelle représente le nombre d'unités achevées et ayant passé les contrôles qualité pour un ordre de production donné. Cette valeur est enregistrée lorsque la production est 'Déclarée comme terminée'. Cet attribut est utilisé pour analyser le rendement et l'efficacité de la production. La comparaison de la Quantité Réelle avec la Quantité Planifiée aide à calculer les taux de rebut et à comprendre les pertes de production. C'est également un élément clé de l'analyse du débit et des tableaux de bord d'utilisation des capacités. Pourquoi c'est important Il est essentiel pour calculer le rendement de production, les taux de rebut et le débit réel, fournissant un aperçu de l'efficacité et de la performance de la fabrication. Où obtenir Cette valeur provient souvent du champ 'QtyGood' dans la table 'ProdTable' ou des tables de journalisation associées lorsqu'une commande est déclarée comme terminée. Exemples 100985000 | |||
| Statut de l'Ordre de Production ProductionOrderStatus | Indique le statut de cycle de vie actuel de l'ordre de production. | ||
| Description Le Statut de l'Ordre de Production reflète la progression de la commande tout au long du cycle de vie de fabrication. Les statuts courants dans Dynamics 365 incluent Créé, Estimé, Planifié, Libéré, Démarré, Déclaré comme terminé et Terminé. Cet attribut fournit un aperçu de l'état de chaque commande à tout moment donné. En Process Mining, l'analyse des changements de statut est une méthode principale pour définir les activités et comprendre le flux de processus. Elle peut être utilisée pour filtrer les commandes dans un état spécifique, analyser le temps passé dans chaque statut et identifier les commandes bloquées ou retardées. Pourquoi c'est important Cet attribut offre une vue d'ensemble de la progression d'une commande et est crucial pour le filtrage, la vérification de conformité et l'analyse du temps passé dans les différentes phases de production. Où obtenir Ceci est le champ 'ProdStatus' dans la table 'ProdTable'. Exemples PlanifiéLibéréDémarréTerminé | |||
| Type de Production ProductionType | La classification de l'ordre de production, telle que standard, retouche ou basée sur un projet. | ||
| Description Le Type de Production catégorise la commande en fonction de son objectif. Par exemple, une commande 'Standard' est destinée à la production de stock régulière, une commande de 'Retouche' sert à corriger les défauts d'un article précédemment produit, et une commande 'Projet' est liée à un projet client spécifique. Cet attribut est important pour créer des vues d'analyse comparables. Le processus pour une commande de retouche est intrinsèquement différent d'une commande standard. Segmenter l'analyse du processus par Type de Production garantit que les comparaisons sont pertinentes et aide à comprendre les défis et les flux uniques de chaque type. Pourquoi c'est important Cet attribut permet la segmentation de l'analyse, car différents types de commandes comme 'Standard' et 'Retouche' suivent naturellement des processus différents et ont des attentes de performance différentes. Où obtenir Ceci est le champ 'ProdType' dans la table 'ProdTable'. Exemples StandardRetravailProjet | |||
| Usine de Production ProductionPlant | Le site ou l'usine de fabrication où l'ordre de production est exécuté. | ||
| Description L'Usine de Production identifie l'emplacement physique ou l'installation responsable du processus de fabrication. C'est une dimension organisationnelle clé pour segmenter et comparer les performances de production. En Process Mining, cet attribut permet de comparer les performances entre différentes usines. Les analystes peuvent comparer les temps de cycle, l'utilisation des ressources et le respect des processus standard entre les sites pour identifier les meilleures pratiques ou localiser les installations qui pourraient nécessiter des améliorations opérationnelles. C'est essentiel pour l'analyse de l'utilisation des capacités. Pourquoi c'est important Cela permet la comparaison des performances et l'étalonnage entre différents sites de fabrication, aidant à identifier les meilleures pratiques et les problèmes spécifiques à une zone. Où obtenir Ceci est le champ 'InventSiteId' dans la table 'ProdTable'. Exemples SITE-ASITE-BEntrepôt principal | |||
| Utilisateur UserId | L'identifiant de l'utilisateur qui a effectué ou est responsable de l'activité. | ||
| Description L'ID Utilisateur identifie l'employé ou le compte système qui a exécuté une étape de processus particulière, comme la libération d'une commande ou la déclaration d'achèvement. Ces informations offrent une visibilité sur qui effectue le travail au sein du processus. L'analyse du processus par utilisateur aide à comprendre la répartition de la charge de travail, à identifier les opportunités de formation, à comparer les performances entre individus ou équipes, et à investiguer les déviations effectuées par des utilisateurs spécifiques. C'est également important à des fins de conformité et de piste d'audit. Pourquoi c'est important Il permet l'analyse de la performance des processus par utilisateur ou par équipe, aide à identifier les opportunités d'automatisation et fournit une piste d'audit pour les activités clés du processus. Où obtenir Trouvé dans des champs comme 'modifiedBy' ou 'createdBy' sur diverses tables, ou des champs utilisateur dans les tables de journal de transactions comme 'ProdJournalTable'. Exemples j.smithm.jonesAX_BATCH_SVC | |||
| Délai de Démarrage de la Production ProductionStartDelay | Le temps écoulé entre la libération de la commande et le démarrage réel de la production. | ||
| Description Cette durée calculée mesure le temps d'attente ou le temps de file d'attente à l'atelier. C'est la différence de temps entre l'activité 'Ordre de Production Libéré' et l'activité 'Production Démarrée'. Ce KPI est vital pour le tableau de bord 'Analyse des Retards d'Allocation des Ressources' car il identifie les retards qui surviennent après la fin de la planification et lorsque la commande est prête pour l'exécution. Des valeurs élevées peuvent indiquer des problèmes de disponibilité des ressources, de mise en scène des matériaux ou de flux d'informations vers l'atelier, fournissant une cible claire pour les améliorations opérationnelles. Pourquoi c'est important Il mesure précisément le délai de "prêt à démarrer", aidant à identifier les goulots d'étranglement liés à la disponibilité des ressources ou à la préparation de l'atelier. Où obtenir Ceci est une métrique calculée : Horodatage('Production Démarrée') - Horodatage('Ordre de Production Libéré'). Exemples 0j 4h 15m1j 2h 0m0j 1h 30m | |||
| Démarrage à temps ProductionScheduleAdherence | Un indicateur booléen qui est vrai si l'ordre de production a commencé à la date de début planifiée ou avant. | ||
| Description Cet attribut calculé fournit un indicateur binaire simple de respect du calendrier pour le démarrage de la production. Il compare l'horodatage de début réel (événement 'Production Démarrée') avec l'attribut 'PlannedStartDate'. Ce drapeau est extrêmement utile pour créer des tableaux de bord et des KPI clairs et concis, tels que le 'Taux de Respect du Calendrier de Production'. Il permet un filtrage et une agrégation faciles pour voir quel pourcentage de commandes démarrent à temps et pour analyser les caractéristiques de celles qui sont retardées, sans avoir besoin d'effectuer des comparaisons de dates directement dans l'outil d'analyse. Pourquoi c'est important Cela simplifie le reporting et le calcul des KPI pour le respect du calendrier, permettant un filtrage et une agrégation faciles des commandes à temps par rapport aux commandes en retard. Où obtenir Ceci est une métrique calculée. La logique est : Horodatage('Production Démarrée') <= PlannedStartDate. Exemples truefaux | |||
| Disponibilité des matériaux MaterialAvailabilityStatus | Indique si les matières premières nécessaires à l'ordre de production sont disponibles. | ||
| Description Cet attribut suit la disponibilité des composants nécessaires à la production. Il pourrait refléter des statuts comme 'Disponible', 'En Commande' ou 'Pénurie'. Cette information est essentielle pour que les ordonnanceurs comprennent si un ordre de production peut réellement démarrer comme prévu. En Process Mining, cet attribut est crucial pour diagnostiquer les causes profondes des retards de démarrage de production. En corrélant ce statut avec le temps entre 'Ordre de Production Libéré' et 'Production Démarrée', les analystes peuvent quantifier l'impact des pénuries de matériaux sur le respect des délais et le temps de cycle global. Cela soutient directement le tableau de bord 'Impact des Retards de Disponibilité des Matériaux'. Pourquoi c'est important Ceci est essentiel pour comprendre et quantifier les retards de démarrage de production causés par les pénuries de matériaux, reliant la performance de la chaîne d'approvisionnement à l'efficacité de la fabrication. Où obtenir Ce statut n'est souvent pas un champ unique, mais est dérivé en vérifiant les niveaux de stock physique pour tous les articles de la nomenclature (BOM) de l'ordre de production via la table 'InventSum'. Exemples Entièrement disponiblePénurie partielleNon disponible | |||
| Heure de fin EndTime | L'horodatage précis indiquant quand l'activité a été terminée. | ||
| Description L'Heure de Fin marque l'achèvement d'une activité spécifique. Alors que l'Heure de Début indique le début, l'Heure de Fin est nécessaire pour comprendre la durée réelle ou le temps de traitement de cette étape unique. En Process Mining, disposer à la fois d'une Heure de Début et d'une Heure de Fin pour les activités permet une analyse plus granulaire du temps d'attente par rapport au temps de traitement. Cela aide à distinguer le temps pendant lequel une activité a été activement travaillée et le temps passé à attendre le début de l'étape suivante, ce qui est crucial pour une analyse détaillée des goulots d'étranglement. Pourquoi c'est important Il permet le calcul du temps de traitement des activités, le distinguant du temps d'attente, ce qui permet une analyse plus précise des goulots d'étranglement. Où obtenir Ceci est souvent dérivé. Par exemple, l'heure de fin de 'Production Démarrée' pourrait être l'heure de début de 'Opération Terminée'. Dans certains journaux, un horodatage de fin peut être explicitement enregistré. Exemples 2023-04-15T09:30:45Z2023-04-15T12:00:00Z2023-04-16T15:00:10Z | |||
| Ligne de Production ProductionLine | La ligne de production, le centre de travail ou le groupe de ressources spécifique assigné à l'ordre de production. | ||
| Description La Ligne de Production identifie la machine, la cellule ou le groupe de ressources spécifique qui exécutera les opérations de fabrication. Cela fournit un niveau de détail plus granulaire que l'Usine de Production. L'analyse du processus par Ligne de Production est essentielle pour une analyse détaillée de la capacité et de l'utilisation. Elle aide à identifier les centres de travail surchargés, à comparer l'efficacité des différentes lignes produisant le même produit, et à identifier les goulots d'étranglement spécifiques aux ressources qui pourraient ne pas être visibles au niveau de l'usine. Pourquoi c'est important Cela permet une analyse granulaire de l'utilisation et de la performance des ressources, aidant à identifier les centres de travail surchargés ou les lignes inefficaces. Où obtenir Cette information se trouve souvent dans le champ 'WrkCtrId' des transactions de gamme de production (tables 'ProdRoute' ou 'ProdRouteTrans'). Exemples LINE-01LINE-02CNC-A | |||
| Numéro d'Ordre de Qualité QualityOrderNumber | L'identifiant d'un ordre de contrôle qualité lié à l'ordre de production. | ||
| Description Lorsqu'une inspection qualité est requise, une Commande qualité est souvent générée dans Dynamics 365. Cet attribut lie le processus de production au processus d'assurance qualité, en saisissant l'ID de la commande qualité associée. Ce lien permet une vue de processus de bout en bout plus complète, incluant les étapes de gestion de la qualité. Il aide à analyser l'impact des inspections qualité sur les délais de production, à identifier les retards dans le processus qualité et à comprendre la fréquence des contrôles qualité pour différents produits ou lignes de production. Pourquoi c'est important Il connecte le processus de production au processus d'assurance qualité, permettant d'analyser l'impact des inspections qualité sur les délais globaux. Où obtenir Cette information est stockée dans les tables de gestion de la qualité (par exemple, 'InventQualityOrderTable') et doit être liée à l'ordre de production. Exemples QO-00123QO-00124QO-00125 | |||
| Numéro de révision ProductionOrderRevisionNumber | Le nombre de fois qu'un plan de production a été ajusté après sa création initiale. | ||
| Description Cet attribut suit le nombre de révisions ou de modifications significatives apportées à un ordre de production, telles que des changements de quantité, de dates ou de routage, après qu'il ait été planifié ou libéré. Un nombre plus élevé indique une plus grande instabilité du plan. C'est une mesure directe pour le KPI 'Taux de Révision du Plan de Production'. L'analyse de cet élément aide à identifier les sources d'instabilité de la planification, comme des changements fréquents de la demande ou une planification initiale imprécise. Il quantifie la quantité de retravail et d'effort de replanification, ce qui entraîne souvent des inefficacités. Pourquoi c'est important Cela mesure directement la stabilité de la planification et soutient le KPI 'Taux de Révision du Plan de Production', mettant en évidence les processus avec des changements excessifs et du retravail. Où obtenir Ceci est un attribut dérivé qui nécessite de compter les occurrences des activités 'Ordre de Production Ajusté' pour chaque cas. Exemples 012 | |||
| Quantité planifiée PlannedQuantity | La quantité de l'article qu'il est prévu de produire. | ||
| Description La Quantité Planifiée est le nombre cible d'unités à fabriquer pour un ordre de production donné. Cette quantité est généralement déterminée par la demande des commandes clients, les exigences de stock de sécurité ou la planification principale. Cet attribut sert de référence pour les indicateurs de performance tels que le rendement et le rebut. En comparant la Quantité Planifiée avec la Quantité Réelle de biens produits, les planificateurs peuvent surveiller l'efficacité de la production et les écarts de matériaux. C'est un point de donnée fondamental pour la planification des besoins en capacité et en matériaux. Pourquoi c'est important Ceci est la quantité de référence utilisée pour mesurer le rendement de production et les taux de rebut en la comparant à la quantité réelle produite. Où obtenir Ceci est le champ 'QtySched' dans la table 'ProdTable'. Exemples 1005000250 | |||
| Temps de Cycle de Production ProductionCycleTime | La durée totale de l'ordre de production depuis sa création jusqu'à son achèvement final. | ||
| Description Cette métrique mesure le temps de cycle de bout en bout pour un seul ordre de production. Il est calculé comme la différence de temps entre le premier événement (généralement 'Ordre de Production Créé') et le dernier événement (par exemple, 'Ordre de Production Terminé') pour le cas. Le Temps de Cycle de Production est un KPI fondamental pour évaluer l'efficacité globale du processus. L'analyse de cette métrique aide à identifier les commandes à long terme, à comprendre le temps moyen de fabrication des produits et à suivre les améliorations de performance au fil du temps. C'est une mesure clé pour le tableau de bord 'Aperçu de la Performance de Production'. Pourquoi c'est important Ceci est un KPI critique pour mesurer l'efficacité globale du processus et identifier les tendances ou les valeurs aberrantes dans le temps nécessaire pour achever un ordre de production. Où obtenir Ceci est une métrique calculée, obtenue en soustrayant l'horodatage du premier événement de l'horodatage du dernier événement pour chaque numéro d'ordre de production. Exemples 7j 4h 30m10j 2h 15m5j 8h 0m | |||
Activités de Planification de Production
| Activité | Description | ||
|---|---|---|---|
| Ordre de Production Créé | Cette activité marque la création d'un ordre de production, qui formalise la demande pour une quantité spécifique d'un produit. Ceci est généralement enregistré lorsqu'un ordre de production planifié est confirmé, créant un enregistrement officiel dans le système avec un ID unique. | ||
| Pourquoi c'est important Ceci est l'événement de démarrage principal du processus de production. L'analyse du temps entre cette création et les étapes ultérieures aide à mesurer le délai global de planification et l'efficacité. Où obtenir Cet événement est inféré à partir de l'horodatage de création de l'enregistrement de l'ordre de production dans la table ProdTable. Le statut initial est généralement 'Créé'. Capture Capturer l'horodatage de création d'une nouvelle entrée dans la ProdTable où le ProdStatus est 'Created'. Type d'événement inferred | |||
| Ordre de Production Libéré | Cette activité signifie que l'ordre de production a été approuvé et autorisé pour exécution sur l'atelier. C'est une étape clé qui libère des documents comme les fiches de travail et les fiches suiveuses. | ||
| Pourquoi c'est important Ceci est le transfert officiel de la planification à l'exécution. Le temps entre 'Planifié' et 'Libéré' peut indiquer des retards d'approbation ou des vérifications finales, tandis que le temps entre 'Libéré' et 'Démarré' mesure la préparation de l'atelier. Où obtenir Ceci est enregistré lorsque le statut de l'ordre de production dans la table ProdTable passe à 'Libéré'. Il s'agit d'une action utilisateur manuelle ou automatisée. Capture Détecter l'horodatage lorsque le champ ProdStatus de la ProdTable passe à 'Released'. Type d'événement inferred | |||
| Ordre de Production Planifié | Cette activité marque la planification de l'ordre de production, qui alloue des ressources, des dates et des heures spécifiques pour ses opérations. Cette étape peut impliquer l'ordonnancement des opérations ou un ordonnancement de tâches plus détaillé. | ||
| Pourquoi c'est important L'ordonnancement est crucial pour la planification des capacités et la gestion des ressources. L'analyse du temps nécessaire pour planifier les commandes et du délai avant leur libération révèle les contraintes de planification et de capacité. Où obtenir Capturé lorsque le statut de l'ordre de production dans la ProdTable passe à 'Scheduled'. Ceci est déclenché par un utilisateur exécutant une fonction de planification. Capture Détecter l'horodatage lorsque le champ ProdStatus de la ProdTable passe à 'Scheduled'. Type d'événement inferred | |||
| Ordre de Production Terminé | Ceci est l'activité finale, représentant la clôture financière de l'ordre de production. Tous les coûts ont été calculés et enregistrés, et aucune transaction supplémentaire ne peut être effectuée sur la commande. | ||
| Pourquoi c'est important Ceci marque l'achèvement réel de la commande d'un point de vue physique et financier. Les retards entre 'Déclaré comme terminé' et 'Terminé' peuvent indiquer des problèmes de comptabilité des coûts ou de processus de clôture financière. Où obtenir Ceci est le dernier changement de statut capturé lorsque le champ 'ProdStatus' dans la table 'ProdTable' est défini sur 'Terminé'. Ceci est déclenché en exécutant le calcul des coûts et en terminant la commande. Capture Détecter l'horodatage lorsque le champ ProdStatus de la ProdTable passe à 'Ended'. Type d'événement inferred | |||
| Production Déclarée Comme Terminée | Indique que le processus de fabrication pour la quantité spécifiée du produit est physiquement terminé et que les produits finis sont maintenant en stock. Il s'agit d'une mise à jour de statut critique qui déclenche des transactions d'inventaire. | ||
| Pourquoi c'est important Ceci marque la fin de la production physique. C'est essentiel pour calculer les taux d'achèvement à temps, la durée réelle de production et le débit. Où obtenir Capturé lorsque le statut de l'ordre de production dans la ProdTable passe à 'Reported as finished'. Ceci est déclenché par la validation d'un journal de déclaration comme terminé. Capture Détecter l'horodatage lorsque le champ ProdStatus de la ProdTable passe à 'Reported as finished'. Type d'événement inferred | |||
| Production Démarrée | Marque le début du travail de production physique pour la commande dans l'atelier. Ceci est souvent enregistré lorsque la première opération ou tâche est démarrée via un terminal d'atelier ou la validation d'un journal. | ||
| Pourquoi c'est important Cette activité fournit l'heure de début réelle de la production, ce qui est crucial pour calculer les retards de démarrage, le respect des délais et les délais réels. Où obtenir Capturé lorsque le statut de l'ordre de production dans la ProdTable passe à 'Started'. Ceci est souvent déclenché par la validation d'une feuille de tâche ou d'un journal de gamme pour la première opération. Capture Détecter l'horodatage lorsque le champ ProdStatus de la ProdTable passe à 'Started'. Type d'événement inferred | |||
| Inspection Qualité Réussie | Représente la réalisation et la validation réussies d'un ordre de qualité associé à la série de production. Cela confirme que les articles produits répondent aux normes de qualité requises. | ||
| Pourquoi c'est important Ceci est une étape clé du processus qualité. La durée entre la génération de l'ordre de qualité et la réussite de l'inspection met en évidence l'efficacité de l'équipe QA. Où obtenir Inférence à partir d'un changement de statut sur l'enregistrement InventQualityOrderTable vers un statut 'Pass'. La valeur de statut spécifique peut varier. Capture Détecter l'horodatage lorsque le statut de l'enregistrement InventQualityOrderTable associé est mis à jour en 'Pass'. Type d'événement inferred | |||
| Matériaux prélevés pour la production | Indique que les matières premières nécessaires à l'ordre de production ont été prélevées de l'entrepôt et sont prêtes à être consommées. Cet événement est enregistré à l'achèvement d'un travail de prélèvement de matières premières ou à la validation d'un journal de liste de prélèvement. | ||
| Pourquoi c'est important Cette activité est une étape cruciale pour démarrer la production. Les retards entre l'ordonnancement et la préparation des matériaux mettent en évidence des problèmes dans les opérations d'entrepôt ou la disponibilité des matériaux. Où obtenir Ceci est généralement un événement explicite enregistré dans les tables de gestion d'entrepôt (WHSWorkTable) ou les journaux d'inventaire (InventJournalTrans) liés à l'ordre de production. Capture Capturer l'horodatage de validation du journal de liste de prélèvement associé à l'ordre de production. Type d'événement explicit | |||
| Opération terminée | Cette activité signifie l'achèvement d'une opération de fabrication individuelle ou d'une étape dans la gamme de production. Un ordre de production aura généralement plusieurs de ces événements. | ||
| Pourquoi c'est important L'analyse du temps entre les opérations permet d'identifier les goulots d'étranglement au sein du processus de production lui-même. Elle offre une vue plus granulaire du flux de l'atelier. Où obtenir Ceci est un événement explicite capturé à partir de l'enregistrement des journaux de fiches suiveuses (ProdJournalRoute) pour chaque opération, indiquant l'achèvement de cette étape. Capture Capturer l'horodatage de validation de chaque enregistrement ProdJournalRoute associé à l'ordre de production. Type d'événement explicit | |||
| Ordre de Production Ajusté | Représente un changement significatif apporté à l'ordre de production après sa libération, tel qu'un changement de quantité ou une modification de date. Cet événement est inféré en comparant les champs clés avant et après une modification. | ||
| Pourquoi c'est important Des ajustements fréquents indiquent une instabilité de la planification ou une demande volatile, entraînant des inefficacités et des retouches. Cela aide à quantifier le taux et l'impact de tels changements. Où obtenir Inférence par l'analyse des journaux de modification ou la comparaison des instantanés de l'enregistrement ProdTable pour des champs comme 'QtySched' ou 'SchedEnd' après que le statut de la commande est 'Released'. Capture Identifier les modifications apportées aux champs clés (par exemple, quantité, dates) de la ProdTable après l'horodatage de l'événement 'Released'. Type d'événement calculated | |||
| Ordre de Production Annulé | Représente l'annulation d'un ordre de production avant sa réalisation. C'est une fin alternative et infructueuse du processus. | ||
| Pourquoi c'est important Le suivi des annulations permet d'identifier les causes de défaillance des processus, telles que les variations de la demande ou les erreurs de planification. Des taux d'annulation élevés peuvent révéler des problèmes systémiques. Où obtenir Ceci est un état final alternatif inféré d'un changement de statut. Le statut exact peut varier, mais il implique souvent de réinitialiser le statut de la commande à un état précédent et de la marquer comme annulée. Capture Détecter un changement de statut qui indique une annulation. Cela peut nécessiter une analyse système spécifique pour l'identifier. Type d'événement inferred | |||
| Ordre de Production Estimé | Représente le calcul de la consommation estimée de matières et de coûts pour l'ordre de production. Il s'agit d'une étape de planification cruciale pour s'assurer que les exigences financières et matérielles sont comprises avant de procéder. | ||
| Pourquoi c'est important Les retards d'estimation peuvent constituer un goulot d'étranglement important dans la phase de planification. Le suivi de cette activité permet d'identifier les inefficacités dans le processus de planification des coûts et des matériaux. Où obtenir Ceci est enregistré lorsque le statut de l'ordre de production dans la table ProdTable passe à 'Estimé'. Ceci est déclenché par un utilisateur exécutant la fonction 'Estimer' sur la commande. Capture Détecter l'horodatage lorsque le champ ProdStatus de la ProdTable passe à 'Estimated'. Type d'événement inferred | |||
| Ordre de Qualité Généré | Un ordre de qualité a été créé pour inspecter le résultat de l'ordre de production. Cet événement marque le début du processus d'assurance qualité pour les biens produits. | ||
| Pourquoi c'est important Le suivi du processus qualité est crucial pour comprendre le délai total. Les retards d'inspection qualité peuvent empêcher l'expédition des marchandises ou leur utilisation dans les processus ultérieurs. Où obtenir Ceci est un événement explicite basé sur la création d'un enregistrement dans la table InventQualityOrderTable qui référence l'ordre de production source. Capture Capturer l'horodatage de création de l'ordre de qualité dans l'InventQualityOrderTable lié à l'ID de l'ordre de production. Type d'événement explicit | |||
Guides d'extraction
Étapes
- Naviguer vers l'espace de travail Gestion des données : Connectez-vous à Microsoft Dynamics 365 Finance and Operations. Utilisez la barre de recherche pour trouver et naviguer vers l'espace de travail
Gestion des données. - Créer un nouveau projet d'exportation : Au sein de l'espace de travail, sélectionnez la tuile
Exportationpour créer un nouveau projet d'exportation de données. Donnez un nom descriptif au projet, tel queProcessMind_Production_Orders. - Sélectionner le format du fichier d'exportation : Dans la configuration du projet, choisissez le format de données souhaité pour l'exportation, tel que CSV ou Excel. Définissez l'option
Entitéet spécifiez les détails du format. Le format CSV est recommandé pour ses performances et sa compatibilité. - Ajouter les entités de données requises : Ajoutez les entités de données nécessaires au projet pour capturer tous les événements des ordres de production. Vous devrez ajouter chacune des entités suivantes :
Ordres de production,Transactions de gamme d'ordre de fabrication,Ordres de qualité d'inventaireetLignes de journal de liste de prélèvement de production. Pour chaque entité, assurez-vous de sélectionner tous les champs pertinents comme décrit dans la section de la requête. - Appliquer les filtres de données : Pour chaque entité, utilisez l'option
Filtrepour délimiter l'exportation des données. Au minimum, filtrez parSociétépour sélectionner l'entité juridique correcte. Il est fortement recommandé d'appliquer un filtre de plage de dates sur un champ de date clé, tel que laDate de créationsur l'entitéOrdres de production, pour limiter le volume de données à une période gérable, par exemple, les 6 derniers mois. - Configurer les exportations incrémentielles (Facultatif) : Pour une analyse continue, configurez le projet pour des exportations incrémentielles. Cela peut être fait en suivant les modifications sur les entités sources, ce qui vous permet d'extraire uniquement les enregistrements nouveaux ou modifiés depuis la dernière exportation, réduisant ainsi considérablement le temps d'exportation.
- Exécuter la tâche d'exportation : Une fois le projet configuré, lancez l'exportation en cliquant sur
Exportationdans le volet d'action. Vous pouvez l'exécuter immédiatement ou la planifier comme une tâche de traitement par lots récurrente. - Télécharger les fichiers exportés : Une fois la tâche d'exportation terminée avec succès, naviguez vers l'historique des tâches. Téléchargez le package, qui sera un fichier ZIP contenant des fichiers de données séparés pour chaque entité que vous avez incluse.
- Transformer les données en journal d'événements : Les fichiers exportés représentent des données de table brutes, et non un journal d'événements formaté. Vous devez utiliser un outil externe (tel qu'un script Python, Power Query dans Excel/Power BI, ou un outil ETL) pour traiter et combiner les données de ces fichiers. La logique de transformation décrite dans la section de la requête doit être appliquée pour pivoter les champs de date et de statut des diverses entités dans un seul fichier de journal d'événements avec une ligne par activité.
- Structurer le journal d'événements final : Assurez-vous que le fichier CSV final transformé contient les colonnes requises :
ProductionOrderNumber,ActivityName,EventTime,SourceSystemetLastDataUpdate, ainsi que tous les attributs recommandés. Le fichier doit être formaté avec une ligne d'en-tête et être prêt à être téléchargé dans ProcessMind.
Configuration
- Entités de données clés : L'extraction repose principalement sur l'exportation de plusieurs entités et leur jonction ultérieure. Les entités principales sont
Production orders(ProdTable),Production order route transactions(ProdRouteTrans) etInventory quality orders(InventQualityOrderTable). - Filtrage par plage de dates : Pour gérer le volume de données, appliquez toujours un filtre de date. Une bonne pratique consiste à filtrer l'entité
Production orderssur laDate de création(CREATEDDATETIME) pour les 3 à 6 derniers mois. Cela garantit la capture de processus complets et récents sans surcharger le système. - Filtre de société : Il est essentiel de définir un filtre pour la société ou l'entité juridique spécifique que vous souhaitez analyser. Cela se fait via l'option
Filtresur chaque entité au sein du projet d'exportation. - Exportation complète ou incrémentielle : Pour l'extraction initiale, une exportation complète est nécessaire. Pour les mises à jour ultérieures, il est fortement recommandé de configurer le suivi des modifications sur les entités et d'effectuer des exportations incrémentielles afin d'améliorer les performances et de réduire la charge de données.
- Prérequis : L'utilisateur exécutant l'exportation doit disposer des rôles de sécurité appropriés, incluant généralement
Data management administratorou un rôle avec des autorisations pour accéder aux entités de données requises.
a Exemple de requête config
/*
This is not a runnable script but a configuration and transformation plan for the Dynamics 365 Data Management Framework.
**Step 1: Configure the Export Project**
Export the following entities with the specified fields:
1. **Entity: Production orders (ProdTable)**
* `ProductionOrderNumber` (PRODID)
* `ProductionOrderStatus` (PRODSTATUS)
* `CreationDate` (CREATEDDATETIME)
* `LastUpdateDateStatusEstimate` (LASTUPDATEDATESTATUSESTIMATE)
* `LastUpdateDateStatusScheduled` (LASTUPDATEDATESTATUSSCHEDULED)
* `ReleaseDate` (RELEASEDATETIME)
* `StartDate` (STARTEDDATETIME)
* `ReportedFinishedDate` (REPORTEDFINISHEDDATETIME)
* `LastUpdateDateStatusEnded` (LASTUPDATEDATESTATUSENDED)
* `ModifiedDateTime` (MODIFIEDDATETIME)
* `CreatedByUser` (CREATEDBY)
* `ProductionSite` (INVENTSITEID)
* `ProductNumber` (ITEMID)
* `ProductionType` (PRODTYPE)
* `Quantity` (QTYsched)
* `ActualQuantity` (QTYCALC)
* `DeliveryDate` (DLVDATE)
2. **Entity: Production order route transactions (ProdRouteTrans)**
* `ProductionOrderNumber` (PRODID)
* `OperationNumber` (OPRNUM)
* `TransactionDate` (TRANSDATE)
* `TransactionTime` (TRANSTIME)
* `CreatedDateTime` (CREATEDDATETIME)
* `CreatedByUser` (CREATEDBY)
3. **Entity: Inventory quality orders (InventQualityOrderTable)**
* `QualityOrderNumber` (INVENTQUALITYORDERID)
* `ReferenceType` (REFTYPE)
* `ReferenceNumber` (PRODID)
* `QualityOrderStatus` (STATUS)
* `CreationDate` (CREATEDDATETIME)
* `ModifiedDateTime` (MODIFIEDDATETIME)
4. **Entity: Production picking list journal lines (ProdJournalBOM)**
* `JournalId` (JOURNALID)
* `ProductionOrderNumber` (PRODID)
* `PostedDateTime` (POSTEDDATETIME)
* `CreatedByUser` (CREATEDBY)
**Step 2: Apply Transformation Logic (Post-Export)**
Use a script or ETL tool to transform the exported files into a single event log CSV. For each row in the source files, generate events as described below.
*/
-- Production Order Created
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Created' AS ActivityName,
CREATEDDATETIME AS EventTime,
PRODSTATUS AS ProductionOrderStatus,
DLVDATE AS PlannedStartDate,
-- [Logic to calculate PlannedEndDate] AS PlannedEndDate,
CREATEDBY AS UserId,
INVENTSITEID AS ProductionPlant,
ITEMID AS ProductNumber,
PRODTYPE AS ProductionType,
QTYCALC AS ActualQuantity,
-- [Your field for Production Priority] AS ProductionPriority
FROM ProdTable
WHERE CREATEDDATETIME IS NOT NULL
UNION ALL
-- Production Order Estimated
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Estimated' AS ActivityName,
LASTUPDATEDATESTATUSESTIMATE AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE LASTUPDATEDATESTATUSESTIMATE IS NOT NULL
UNION ALL
-- Production Order Scheduled
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Scheduled' AS ActivityName,
LASTUPDATEDATESTATUSSCHEDULED AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE LASTUPDATEDATESTATUSSCHEDULED IS NOT NULL
UNION ALL
-- Materials Picked For Production (based on the first picking list journal posting)
SELECT
PRODID AS ProductionOrderNumber,
'Materials Picked For Production' AS ActivityName,
MIN(POSTEDDATETIME) AS EventTime, -- Use the earliest posting time for a given order
-- Other attributes from ProdTable...
FROM ProdJournalBOM
WHERE POSTEDDATETIME IS NOT NULL
GROUP BY PRODID
UNION ALL
-- Production Order Released
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Released' AS ActivityName,
RELEASEDATETIME AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE RELEASEDATETIME IS NOT NULL
UNION ALL
-- Production Order Adjusted (inferred from modification after release)
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Adjusted' AS ActivityName,
MODIFIEDDATETIME AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE MODIFIEDDATETIME > RELEASEDATETIME AND PRODSTATUS NOT IN ('Ended', 'Cancelled') -- Example logic
UNION ALL
-- Production Started
SELECT
PRODID AS ProductionOrderNumber,
'Production Started' AS ActivityName,
STARTEDDATETIME AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE STARTEDDATETIME IS NOT NULL
UNION ALL
-- Operation Completed
SELECT
PRODID AS ProductionOrderNumber,
'Operation Completed' AS ActivityName,
CREATEDDATETIME AS EventTime,
-- Other attributes from ProdTable linked on PRODID...
FROM ProdRouteTrans
WHERE CREATEDDATETIME IS NOT NULL
UNION ALL
-- Production Reported As Finished
SELECT
PRODID AS ProductionOrderNumber,
'Production Reported As Finished' AS ActivityName,
REPORTEDFINISHEDDATETIME AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE REPORTEDFINISHEDDATETIME IS NOT NULL
UNION ALL
-- Quality Order Generated
SELECT
PRODID AS ProductionOrderNumber,
'Quality Order Generated' AS ActivityName,
CREATEDDATETIME AS EventTime,
-- Other attributes from ProdTable linked on PRODID...
FROM InventQualityOrderTable
WHERE REFTYPE = 'Production' AND CREATEDDATETIME IS NOT NULL
UNION ALL
-- Quality Inspection Passed
SELECT
PRODID AS ProductionOrderNumber,
'Quality Inspection Passed' AS ActivityName,
MODIFIEDDATETIME AS EventTime,
-- Other attributes from ProdTable linked on PRODID...
FROM InventQualityOrderTable
WHERE REFTYPE = 'Production' AND STATUS = 'Pass' AND MODIFIEDDATETIME IS NOT NULL
UNION ALL
-- Production Order Ended
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Ended' AS ActivityName,
LASTUPDATEDATESTATUSENDED AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE LASTUPDATEDATESTATUSENDED IS NOT NULL
UNION ALL
-- Production Order Cancelled
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Cancelled' AS ActivityName,
MODIFIEDDATETIME AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE PRODSTATUS = 'Stopped' -- Or the equivalent 'Cancelled' status enum value in your system Étapes
- Configurer BYOD dans Dynamics 365 : Assurez-vous que la fonctionnalité « Bring your own database » (BYOD) est configurée dans votre environnement Dynamics 365 for Finance and Operations. Cela implique la mise en place d'une base de données Azure SQL et la configuration de l'exportation des données depuis Dynamics 365.
- Publier les entités requises : Depuis l'espace de travail « Gestion des données », naviguez vers « Entités de données ». Recherchez et publiez les entités clés suivantes vers votre base de données BYOD : ProdTable, ProdRouteTrans, InventPickingListJour et InventQualityOrderTable. Assurez-vous qu'elles sont configurées pour une exportation récurrente.
- Vérifier la synchronisation des données : Confirmez que les données des entités publiées se synchronisent avec succès et régulièrement vers votre base de données Azure SQL cible. Vérifiez l'historique des tâches d'exportation pour toute erreur.
- Se connecter à la base de données BYOD : Utilisez un client SQL, tel que SQL Server Management Studio (SSMS) ou Azure Data Studio, pour vous connecter à la base de données Azure SQL où résident vos données Dynamics 365.
- Préparer la requête SQL : Ouvrez une nouvelle fenêtre de requête. Copiez la requête SQL complète fournie dans ce document.
- Définir les paramètres de la requête : Dans la requête, localisez les variables d'espace réservé. Remplacez '{StartDate}', '{EndDate}' et '{CompanyCode}' par la plage de dates souhaitée et l'ID DataAreaId spécifique de la société que vous souhaitez analyser.
- Exécuter la requête : Exécutez la requête SQL modifiée sur la base de données BYOD. Le temps d'exécution variera en fonction du volume de données et de la plage de dates spécifiée.
- Examiner les résultats : Une fois la requête terminée, examinez la sortie pour vous assurer qu'elle contient les colonnes et les données attendues pour toutes les activités extraites. L'ensemble de résultats est le journal d'événements.
- Exporter le journal d'événements : Exportez les résultats de la requête vers un fichier CSV. La plupart des clients SQL disposent d'une fonction intégrée pour enregistrer les résultats directement dans un fichier.
- Formater pour ProcessMind : Assurez-vous que le fichier CSV exporté a un encodage UTF-8 et que les en-têtes de colonne correspondent aux noms d'attributs requis par ProcessMind, tels que CaseId, Activity et Timestamp. La requête fournie utilise déjà les alias corrects.
Configuration
- Entités de données clés : La requête repose principalement sur l'exportation des entités suivantes vers votre instance BYOD :
PRODTABLE: Contient les informations d'en-tête et le statut principal de l'ordre de production.PRODROUTETRANS: Fournit des détails sur les opérations de production individuelles et leur achèvement.INVENTPICKINGLISTJOUR: Enregistre le prélèvement des matériaux pour les ordres de production.INVENTQUALITYORDERTABLE: Suivi les ordres d'assurance qualité liés à la production.
- Plage de dates : Il est recommandé de commencer avec une plage de dates limitée, par exemple, 3 à 6 mois de données, pour garantir des performances de requête gérables. La requête utilise la date de création de l'ordre de production (
CREATEDDATETIMEdePRODTABLE) pour le filtrage. - Filtre de code de société : Le champ
DATAREAIDest utilisé pour filtrer les données pour une entité juridique ou une société spécifique. Vous devez remplacer le placeholder'{CompanyCode}'par l'ID pertinent, par exemple, 'usmf'. - Prérequis : Cette méthode nécessite un accès administrateur système à Dynamics 365 Finance and Operations pour configurer BYOD et des autorisations de contributeur sur la base de données Azure SQL pour exécuter les requêtes.
- Performance : Pour de très grands ensembles de données couvrant plusieurs années ou sociétés, envisagez d'exécuter la requête pendant les heures creuses. Vous pouvez également diviser l'extraction en périodes plus courtes et combiner les résultats ultérieurement.
a Exemple de requête sql
SELECT
p.PRODID AS ProductionOrderNumber,
'Production Order Created' AS ActivityName,
p.CREATEDDATETIME AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
p.CREATEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYCALC AS ActualQuantity, -- Using calculated quantity at creation
p.PRODPRIO AS ProductionPriority
FROM PRODTABLE p
WHERE p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Production Order Estimated' AS ActivityName,
p.COSTCALCDATETIME AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
p.MODIFIEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYCALC AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM PRODTABLE p
WHERE p.COSTCALCDATETIME IS NOT NULL AND p.PRODSTATUS >= 2 AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Production Order Scheduled' AS ActivityName,
p.SCHEDDATE AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
p.MODIFIEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYCALC AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM PRODTABLE p
WHERE p.SCHEDDATE IS NOT NULL AND p.PRODSTATUS >= 3 AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Materials Picked For Production' AS ActivityName,
pl.LEDGERVOUCHERPOSTEDDATETIME AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
pl.CREATEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM INVENTPICKINGLISTJOUR pl
JOIN PRODTABLE p ON pl.INVENTREFID = p.PRODID AND pl.DATAREAID = p.DATAREAID
WHERE pl.LEDGERVOUCHERPOSTEDDATETIME IS NOT NULL AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Production Order Released' AS ActivityName,
p.RELEASEDATE AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
p.MODIFIEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM PRODTABLE p
WHERE p.RELEASEDATE IS NOT NULL AND p.PRODSTATUS >= 4 AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Production Order Adjusted' AS ActivityName,
p.MODIFIEDDATETIME AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
p.MODIFIEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM PRODTABLE p
WHERE p.RELEASEDATE IS NOT NULL AND p.MODIFIEDDATETIME > p.RELEASEDATE AND p.PRODSTATUS IN (4, 5) AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Production Started' AS ActivityName,
p.STARTEDUPDATETIME AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
p.MODIFIEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM PRODTABLE p
WHERE p.STARTEDUPDATETIME IS NOT NULL AND p.PRODSTATUS >= 5 AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
prt.PRODID AS ProductionOrderNumber,
'Operation Completed' AS ActivityName,
prt.TRANSDATE AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
prt.CREATEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM PRODROUTETRANS prt
JOIN PRODTABLE p ON prt.PRODID = p.PRODID AND prt.DATAREAID = p.DATAREAID
WHERE prt.POSTINGTYPE = 8 AND prt.TRANSDATE IS NOT NULL AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Production Reported As Finished' AS ActivityName,
p.LASTUPDDATEPRINT AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
p.MODIFIEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM PRODTABLE p
WHERE p.PRODSTATUS = 6 AND p.LASTUPDDATEPRINT IS NOT NULL AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Quality Order Generated' AS ActivityName,
qo.CREATEDDATETIME AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
qo.CREATEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM INVENTQUALITYORDERTABLE qo
JOIN PRODTABLE p ON qo.INVENTREFID = p.PRODID AND qo.DATAREAID = p.DATAREAID
WHERE qo.INVENTREFTYPE = 9 AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Quality Inspection Passed' AS ActivityName,
qo.MODIFIEDDATETIME AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
qo.MODIFIEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM INVENTQUALITYORDERTABLE qo
JOIN PRODTABLE p ON qo.INVENTREFID = p.PRODID AND qo.DATAREAID = p.DATAREAID
WHERE qo.INVENTREFTYPE = 9 AND qo.STATUS = 2 AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Production Order Ended' AS ActivityName,
p.LASTUPDDATEPRINT AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
p.MODIFIEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM PRODTABLE p
WHERE p.PRODSTATUS = 7 AND p.LASTUPDDATEPRINT IS NOT NULL AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'
UNION ALL
SELECT
p.PRODID AS ProductionOrderNumber,
'Production Order Cancelled' AS ActivityName,
p.MODIFIEDDATETIME AS EventTime,
'Dynamics 365 BYOD' AS SourceSystem,
GETUTCDATE() AS LastDataUpdate,
p.PRODSTATUS AS ProductionOrderStatus,
p.SCHEDSTART AS PlannedStartDate,
p.SCHEDEND AS PlannedEndDate,
p.MODIFIEDBY AS UserId,
p.INVENTSITEID AS ProductionPlant,
p.ITEMID AS ProductNumber,
p.PRODTYPE AS ProductionType,
p.QTYGOOD AS ActualQuantity,
p.PRODPRIO AS ProductionPriority
FROM PRODTABLE p
WHERE p.PRODSTATUS = 0 AND p.CREATEDDATETIME >= '{StartDate}' AND p.CREATEDDATETIME <= '{EndDate}' AND p.DATAREAID = '{CompanyCode}'; Étapes
- Naviguer vers l'espace de travail Gestion des données : Connectez-vous à Microsoft Dynamics 365 Finance and Operations. Utilisez la barre de recherche pour trouver et naviguer vers l'espace de travail
Gestion des données. - Créer un nouveau projet d'exportation : Au sein de l'espace de travail, sélectionnez la tuile
Exportationpour créer un nouveau projet d'exportation de données. Donnez un nom descriptif au projet, tel queProcessMind_Production_Orders. - Sélectionner le format du fichier d'exportation : Dans la configuration du projet, choisissez le format de données souhaité pour l'exportation, tel que CSV ou Excel. Définissez l'option
Entitéet spécifiez les détails du format. Le format CSV est recommandé pour ses performances et sa compatibilité. - Ajouter les entités de données requises : Ajoutez les entités de données nécessaires au projet pour capturer tous les événements des ordres de production. Vous devrez ajouter chacune des entités suivantes :
Ordres de production,Transactions de gamme d'ordre de fabrication,Ordres de qualité d'inventaireetLignes de journal de liste de prélèvement de production. Pour chaque entité, assurez-vous de sélectionner tous les champs pertinents comme décrit dans la section de la requête. - Appliquer les filtres de données : Pour chaque entité, utilisez l'option
Filtrepour délimiter l'exportation des données. Au minimum, filtrez parSociétépour sélectionner l'entité juridique correcte. Il est fortement recommandé d'appliquer un filtre de plage de dates sur un champ de date clé, tel que laDate de créationsur l'entitéOrdres de production, pour limiter le volume de données à une période gérable, par exemple, les 6 derniers mois. - Configurer les exportations incrémentielles (Facultatif) : Pour une analyse continue, configurez le projet pour des exportations incrémentielles. Cela peut être fait en suivant les modifications sur les entités sources, ce qui vous permet d'extraire uniquement les enregistrements nouveaux ou modifiés depuis la dernière exportation, réduisant ainsi considérablement le temps d'exportation.
- Exécuter la tâche d'exportation : Une fois le projet configuré, lancez l'exportation en cliquant sur
Exportationdans le volet d'action. Vous pouvez l'exécuter immédiatement ou la planifier comme une tâche de traitement par lots récurrente. - Télécharger les fichiers exportés : Une fois la tâche d'exportation terminée avec succès, naviguez vers l'historique des tâches. Téléchargez le package, qui sera un fichier ZIP contenant des fichiers de données séparés pour chaque entité que vous avez incluse.
- Transformer les données en journal d'événements : Les fichiers exportés représentent des données de table brutes, et non un journal d'événements formaté. Vous devez utiliser un outil externe (tel qu'un script Python, Power Query dans Excel/Power BI, ou un outil ETL) pour traiter et combiner les données de ces fichiers. La logique de transformation décrite dans la section de la requête doit être appliquée pour pivoter les champs de date et de statut des diverses entités dans un seul fichier de journal d'événements avec une ligne par activité.
- Structurer le journal d'événements final : Assurez-vous que le fichier CSV final transformé contient les colonnes requises :
ProductionOrderNumber,ActivityName,EventTime,SourceSystemetLastDataUpdate, ainsi que tous les attributs recommandés. Le fichier doit être formaté avec une ligne d'en-tête et être prêt à être téléchargé dans ProcessMind.
Configuration
- Entités de données clés : L'extraction repose principalement sur l'exportation de plusieurs entités et leur jonction ultérieure. Les entités principales sont
Production orders(ProdTable),Production order route transactions(ProdRouteTrans) etInventory quality orders(InventQualityOrderTable). - Filtrage par plage de dates : Pour gérer le volume de données, appliquez toujours un filtre de date. Une bonne pratique consiste à filtrer l'entité
Production orderssur laDate de création(CREATEDDATETIME) pour les 3 à 6 derniers mois. Cela garantit la capture de processus complets et récents sans surcharger le système. - Filtre de société : Il est essentiel de définir un filtre pour la société ou l'entité juridique spécifique que vous souhaitez analyser. Cela se fait via l'option
Filtresur chaque entité au sein du projet d'exportation. - Exportation complète ou incrémentielle : Pour l'extraction initiale, une exportation complète est nécessaire. Pour les mises à jour ultérieures, il est fortement recommandé de configurer le suivi des modifications sur les entités et d'effectuer des exportations incrémentielles afin d'améliorer les performances et de réduire la charge de données.
- Prérequis : L'utilisateur exécutant l'exportation doit disposer des rôles de sécurité appropriés, incluant généralement
Data management administratorou un rôle avec des autorisations pour accéder aux entités de données requises.
a Exemple de requête config
/*
This is not a runnable script but a configuration and transformation plan for the Dynamics 365 Data Management Framework.
**Step 1: Configure the Export Project**
Export the following entities with the specified fields:
1. **Entity: Production orders (ProdTable)**
* `ProductionOrderNumber` (PRODID)
* `ProductionOrderStatus` (PRODSTATUS)
* `CreationDate` (CREATEDDATETIME)
* `LastUpdateDateStatusEstimate` (LASTUPDATEDATESTATUSESTIMATE)
* `LastUpdateDateStatusScheduled` (LASTUPDATEDATESTATUSSCHEDULED)
* `ReleaseDate` (RELEASEDATETIME)
* `StartDate` (STARTEDDATETIME)
* `ReportedFinishedDate` (REPORTEDFINISHEDDATETIME)
* `LastUpdateDateStatusEnded` (LASTUPDATEDATESTATUSENDED)
* `ModifiedDateTime` (MODIFIEDDATETIME)
* `CreatedByUser` (CREATEDBY)
* `ProductionSite` (INVENTSITEID)
* `ProductNumber` (ITEMID)
* `ProductionType` (PRODTYPE)
* `Quantity` (QTYsched)
* `ActualQuantity` (QTYCALC)
* `DeliveryDate` (DLVDATE)
2. **Entity: Production order route transactions (ProdRouteTrans)**
* `ProductionOrderNumber` (PRODID)
* `OperationNumber` (OPRNUM)
* `TransactionDate` (TRANSDATE)
* `TransactionTime` (TRANSTIME)
* `CreatedDateTime` (CREATEDDATETIME)
* `CreatedByUser` (CREATEDBY)
3. **Entity: Inventory quality orders (InventQualityOrderTable)**
* `QualityOrderNumber` (INVENTQUALITYORDERID)
* `ReferenceType` (REFTYPE)
* `ReferenceNumber` (PRODID)
* `QualityOrderStatus` (STATUS)
* `CreationDate` (CREATEDDATETIME)
* `ModifiedDateTime` (MODIFIEDDATETIME)
4. **Entity: Production picking list journal lines (ProdJournalBOM)**
* `JournalId` (JOURNALID)
* `ProductionOrderNumber` (PRODID)
* `PostedDateTime` (POSTEDDATETIME)
* `CreatedByUser` (CREATEDBY)
**Step 2: Apply Transformation Logic (Post-Export)**
Use a script or ETL tool to transform the exported files into a single event log CSV. For each row in the source files, generate events as described below.
*/
-- Production Order Created
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Created' AS ActivityName,
CREATEDDATETIME AS EventTime,
PRODSTATUS AS ProductionOrderStatus,
DLVDATE AS PlannedStartDate,
-- [Logic to calculate PlannedEndDate] AS PlannedEndDate,
CREATEDBY AS UserId,
INVENTSITEID AS ProductionPlant,
ITEMID AS ProductNumber,
PRODTYPE AS ProductionType,
QTYCALC AS ActualQuantity,
-- [Your field for Production Priority] AS ProductionPriority
FROM ProdTable
WHERE CREATEDDATETIME IS NOT NULL
UNION ALL
-- Production Order Estimated
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Estimated' AS ActivityName,
LASTUPDATEDATESTATUSESTIMATE AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE LASTUPDATEDATESTATUSESTIMATE IS NOT NULL
UNION ALL
-- Production Order Scheduled
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Scheduled' AS ActivityName,
LASTUPDATEDATESTATUSSCHEDULED AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE LASTUPDATEDATESTATUSSCHEDULED IS NOT NULL
UNION ALL
-- Materials Picked For Production (based on the first picking list journal posting)
SELECT
PRODID AS ProductionOrderNumber,
'Materials Picked For Production' AS ActivityName,
MIN(POSTEDDATETIME) AS EventTime, -- Use the earliest posting time for a given order
-- Other attributes from ProdTable...
FROM ProdJournalBOM
WHERE POSTEDDATETIME IS NOT NULL
GROUP BY PRODID
UNION ALL
-- Production Order Released
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Released' AS ActivityName,
RELEASEDATETIME AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE RELEASEDATETIME IS NOT NULL
UNION ALL
-- Production Order Adjusted (inferred from modification after release)
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Adjusted' AS ActivityName,
MODIFIEDDATETIME AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE MODIFIEDDATETIME > RELEASEDATETIME AND PRODSTATUS NOT IN ('Ended', 'Cancelled') -- Example logic
UNION ALL
-- Production Started
SELECT
PRODID AS ProductionOrderNumber,
'Production Started' AS ActivityName,
STARTEDDATETIME AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE STARTEDDATETIME IS NOT NULL
UNION ALL
-- Operation Completed
SELECT
PRODID AS ProductionOrderNumber,
'Operation Completed' AS ActivityName,
CREATEDDATETIME AS EventTime,
-- Other attributes from ProdTable linked on PRODID...
FROM ProdRouteTrans
WHERE CREATEDDATETIME IS NOT NULL
UNION ALL
-- Production Reported As Finished
SELECT
PRODID AS ProductionOrderNumber,
'Production Reported As Finished' AS ActivityName,
REPORTEDFINISHEDDATETIME AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE REPORTEDFINISHEDDATETIME IS NOT NULL
UNION ALL
-- Quality Order Generated
SELECT
PRODID AS ProductionOrderNumber,
'Quality Order Generated' AS ActivityName,
CREATEDDATETIME AS EventTime,
-- Other attributes from ProdTable linked on PRODID...
FROM InventQualityOrderTable
WHERE REFTYPE = 'Production' AND CREATEDDATETIME IS NOT NULL
UNION ALL
-- Quality Inspection Passed
SELECT
PRODID AS ProductionOrderNumber,
'Quality Inspection Passed' AS ActivityName,
MODIFIEDDATETIME AS EventTime,
-- Other attributes from ProdTable linked on PRODID...
FROM InventQualityOrderTable
WHERE REFTYPE = 'Production' AND STATUS = 'Pass' AND MODIFIEDDATETIME IS NOT NULL
UNION ALL
-- Production Order Ended
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Ended' AS ActivityName,
LASTUPDATEDATESTATUSENDED AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE LASTUPDATEDATESTATUSENDED IS NOT NULL
UNION ALL
-- Production Order Cancelled
SELECT
PRODID AS ProductionOrderNumber,
'Production Order Cancelled' AS ActivityName,
MODIFIEDDATETIME AS EventTime,
-- Other attributes from ProdTable...
FROM ProdTable
WHERE PRODSTATUS = 'Stopped' -- Or the equivalent 'Cancelled' status enum value in your system