Datatemplate voor productieplanning
Datatemplate voor productieplanning
- Aanbevolen attributen om te verzamelen
- Belangrijke activiteiten om bij te houden
- Extractiehandleiding voor Microsoft Dynamics 365 Manufacturing
Attributen voor productieplanning
| Naam | Beschrijving | ||
|---|---|---|---|
| Productieorder ProductionOrderNumber | De unieke identificatiecode van een productieorder. Deze dient als primaire case-ID om alle bijbehorende plannings- en uitvoeringsactiviteiten te volgen. | ||
| Beschrijving Het productieordernummer, in Microsoft Dynamics 365 vaak ProdId genoemd, is de centrale identificatiecode die alle gebeurtenissen, materialen, middelen en kosten van een specifieke productieorder met elkaar verbindt. Hiermee kun je het volledige verloop van de productieplanning en -uitvoering voor één opdracht analyseren. Bij process mining is dit attribuut nodig om bijbehorende gebeurtenissen in één case te groeperen. Door processen op productieordernummer te analyseren, kun je bottlenecks, vertragingen en afwijkingen in de standaardproductiestroom opsporen, vanaf het aanmaken en inplannen tot en met de afronding en kostencalculatie. Waarom dit belangrijk is Dit is de belangrijkste case-identificatiecode. Je hebt deze nodig om bijbehorende gebeurtenissen te groeperen en het volledige productieplanningsproces voor analyse te reconstrueren. Waar vind je dit? Dit is het veld ‘ProdId’ in de tabel ‘ProdTable’ van Microsoft Dynamics 365 Manufacturing. Voorbeelden WO-000456WO-000457WO-000458 | |||
| Activiteitsnaam ActivityName | De naam van de specifieke bedrijfsgebeurtenis of stap in het productieplanningsproces. | ||
| Beschrijving De activiteitsnaam beschrijft één stap in de levenscyclus van de productieplanning, zoals ‘Productieorder aangemaakt’, ‘Materialen verzameld voor productie’ of ‘Productie gestart’. Deze activiteiten vormen de bouwstenen van de proceskaart. Door de volgorde en duur van deze activiteiten te analyseren, kun je de processtroom visualiseren, veelvoorkomende routes herkennen, herstelwerk opsporen en meten hoeveel tijd verschillende fasen kosten. Dit attribuut laat zien wat er op elk punt in het proces gebeurt. Waarom dit belangrijk is Dit attribuut beschrijft de processtappen. Daarmee kun je een proceskaart maken en de processtroom, variaties en bottlenecks analyseren. Waar vind je dit? Deze waarde wordt meestal afgeleid uit event logs of door verschillende statuswijzigingen en transactietypen in tabellen zoals ‘ProdRouteTrans’ en ‘ProdJournalBOM’ en wijzigingen in de statusvelden van ‘ProdTable’ in kaart te brengen. Voorbeelden Productieorder aangemaaktProductieorder vrijgegevenProductie gestartProductie gereedgemeld | |||
| Bronsysteem SourceSystem | Het systeem waaruit de data is opgehaald. | ||
| Beschrijving Dit attribuut geeft aan uit welk informatiesysteem de gebeurtenisdata afkomstig is. Voor deze procesweergave is de waarde steeds ‘Microsoft Dynamics 365 Manufacturing’. In omgevingen met meerdere gekoppelde systemen is dit veld belangrijk om de herkomst van data te volgen, problemen met de datakwaliteit op te lossen en te begrijpen hoe verschillende systemen bijdragen aan het totale proces. Zo is duidelijk waar de geanalyseerde data vandaan komt. Waarom dit belangrijk is Dit geeft belangrijke context over de herkomst van de data. Die informatie is nodig voor datagovernance, validatie en het beheer van datapijplijnen uit meerdere bedrijfssystemen. Waar vind je dit? Dit is een vaste waarde die je tijdens de data-extractie en -transformatie toevoegt om de herkomst van de dataset aan te geven. Voorbeelden Microsoft Dynamics 365 ManufacturingD365 F&O | |||
| Gebeurtenistijd EventTime | De exacte timestamp waarop de activiteit plaatsvond. | ||
| Beschrijving Gebeurtenistijd, of timestamp, legt de exacte datum en tijd vast waarop een activiteit plaatsvond. Deze data is nodig voor alle tijdsanalyses met process mining, zoals het berekenen van doorlooptijden, het opsporen van vertragingen tussen stappen en het volgen van procesprestaties. Bij productieplanning gebruik je dit attribuut om onder meer de doorlooptijd van de planning, vertragingen bij de productiestart en de totale orderdoorlooptijd te meten. Nauwkeurige timestamps in chronologische volgorde zijn nodig voor een correct en bruikbaar procesmodel. Waarom dit belangrijk is Deze timestamp is nodig om gebeurtenissen op volgorde te zetten, de tijd tussen activiteiten te berekenen en tijdsanalyses uit te voeren, zoals het meten van doorlooptijden en het opsporen van bottlenecks. Waar vind je dit? Dit is te vinden in verschillende transactietabellen, bijvoorbeeld als ‘createdDateTime’ in ‘ProdTable’ of als transactiedatumvelden in ‘ProdRouteTrans’, ‘ProdJournalRoute’ en ‘ProdJournalBOM’. Voorbeelden 2023-04-15T09:00:12Z2023-04-15T11:30:00Z2023-04-16T14:22:05Z | |||
| Laatste data-update LastDataUpdate | De timestamp waarop de data voor deze gebeurtenis voor het laatst is bijgewerkt of uit het bronsysteem is opgehaald. | ||
| Beschrijving Dit attribuut geeft de datum en tijd aan waarop de data voor het laatst uit het bronsysteem is opgehaald. Het is een metadataveld dat laat zien hoe actueel de analyse is. Als je weet wanneer de data voor het laatst is bijgewerkt, kunnen analisten en gebruikers beter beoordelen hoe actueel de inzichten uit de process mining-tool zijn. Zo is duidelijk of de dashboards realtime data tonen of data van een eerder moment. Dat is belangrijk voor beslissingen over de bedrijfsvoering. Waarom dit belangrijk is Dit attribuut is belangrijk voor datagovernance. Het maakt duidelijk hoe actueel de data is, zodat gebruikers kunnen beoordelen of de procesinzichten op recente informatie zijn gebaseerd. Waar vind je dit? Deze timestamp wordt tijdens het proces voor data-extractie, -transformatie en -laden (ETL) gegenereerd en aan elk record toegevoegd. Voorbeelden 2023-05-20T05:00:00Z2023-05-21T05:00:00Z | |||
| Gebruiker UserId | De identificatie van de gebruiker die de activiteit heeft uitgevoerd of ervoor verantwoordelijk is. | ||
| Beschrijving De gebruikers-ID geeft aan welke medewerker of systeemaccount een processtap heeft uitgevoerd, zoals het vrijgeven van een order of het melden van de afronding. Zo zie je wie het werk in het proces uitvoert. Door het proces per gebruiker te analyseren, krijg je inzicht in de verdeling van het werk. Je kunt opleidingsbehoeften opsporen, prestaties van medewerkers of teams vergelijken en afwijkingen door specifieke gebruikers onderzoeken. Deze informatie is ook van belang voor compliance en het auditspoor. Waarom dit belangrijk is Hiermee kun je procesprestaties per gebruiker of team analyseren, kansen voor automatisering opsporen en belangrijke procesactiviteiten vastleggen in het auditspoor. Waar vind je dit? Te vinden in velden zoals ‘modifiedBy’ of ‘createdBy’ in verschillende tabellen, of in gebruikersvelden van transactielogtabellen zoals ‘ProdJournalTable’. Voorbeelden j.smithm.jonesAX_BATCH_SVC | |||
| Geplande einddatum PlannedEndDate | De datum en tijd waarop de productieorder volgens planning moet zijn afgerond. | ||
| Beschrijving De geplande einddatum is het beoogde tijdstip waarop een productieorder klaar moet zijn, zoals bepaald door de planningsengine. Hierbij wordt rekening gehouden met bewerkingstijden, resourcekalenders en doorlooptijden om te voorspellen wanneer de gereed producten beschikbaar zijn. Bij procesanalyse is dit attribuut belangrijk om te beoordelen of productieorders op tijd worden afgerond. Door de geplande einddatum te vergelijken met de werkelijke eindtijd (van de activiteit ‘Productie als gereed gemeld’ of ‘Productieorder beëindigd’), kun je de KPI voor het percentage productieorders dat op tijd wordt afgerond berekenen. Ook helpt dit om terugkerende oorzaken van te late leveringen te vinden. Waarom dit belangrijk is Dit attribuut is de maatstaf voor het percentage orders dat op tijd wordt afgerond en voor de nauwkeurigheid van de productieplanning. Waar vind je dit? Dit is het veld ‘SchedEnd’ in de tabel ‘ProdTable’. Voorbeelden 2023-04-25T17:00:00Z2023-04-26T17:00:00Z2023-04-27T17:00:00Z | |||
| Geplande startdatum PlannedStartDate | De datum en tijd waarop de productieorder volgens planning moet beginnen. | ||
| Beschrijving De geplande startdatum is een belangrijke uitkomst van het planningsproces. Deze geeft aan wanneer de productie van een order moet beginnen. De datum wordt bepaald op basis van de beschikbaarheid van materialen, de capaciteit van bronnen en de uiterste datums van de vraag. Dit attribuut is essentieel om te analyseren of de planning wordt gevolgd. Door de geplande startdatum te vergelijken met het werkelijke begintijdstip van de productie (de timestamp van de activiteit ‘Productie gestart’), kunnen organisaties de punctualiteit meten, oorzaken van vertraging opsporen en KPI’s berekenen, zoals het percentage productieorders dat volgens planning start. Waarom dit belangrijk is Deze datum is het uitgangspunt om te meten of de planning wordt gevolgd en om vertraging tussen de planning en de daadwerkelijke start van de productie vast te stellen. Waar vind je dit? Dit is het veld ‘SchedStart’ in de tabel ‘ProdTable’. Voorbeelden 2023-04-18T08:00:00Z2023-04-19T08:00:00Z2023-04-20T08:00:00Z | |||
| Productielocatie ProductionPlant | De productielocatie of fabriek waar de productieorder wordt uitgevoerd. | ||
| Beschrijving De productielocatie geeft aan welke fysieke locatie of vestiging verantwoordelijk is voor het productieproces. Dit is een belangrijke organisatorische dimensie om productieprestaties uit te splitsen en te vergelijken. Met process mining kun je prestaties van verschillende productielocaties met elkaar vergelijken. Analisten kunnen doorlooptijden, bronbenutting en het volgen van standaardprocessen per locatie vergelijken. Zo vinden ze goede werkwijzen en locaties waar verbeteringen nodig zijn. Dit attribuut is belangrijk voor analyses van capaciteitsbenutting. Waarom dit belangrijk is Hiermee kun je prestaties van verschillende productielocaties vergelijken en goede werkwijzen of locatiespecifieke problemen opsporen. Waar vind je dit? Dit is het veld ‘InventSiteId’ in de tabel ‘ProdTable’. Voorbeelden LOCATIE-ALOCATIE-BHoofdmagazijn | |||
| Productieprioriteit ProductionPriority | Een aanduiding van de urgentie of prioriteit van de productieorder. | ||
| Beschrijving Planners en roosteraars gebruiken de productieprioriteit om de volgorde van het werk op de productievloer te bepalen. Orders met een hogere prioriteit kunnen voorrang krijgen, waardoor de geplande volgorde van andere orders verandert. Met dit attribuut analyseer je hoe vaak productieplannen veranderen door orders met hoge prioriteit of spoedorders. Veranderingen in de prioriteit tijdens de levenscyclus van een order kunnen wijzen op wisselende vraag of problemen met de planning. Dit attribuut is belangrijk voor het dashboard ‘Trends in spoedproductie’ en de KPI ‘Percentage spoedproductie’. Waarom dit belangrijk is Hiermee kun je zien hoe vaak spoedorders voorkomen en wat hun impact is. Dat kan wijzen op instabiliteit in de planning of op reactief beheer van de bedrijfsvoering. Waar vind je dit? Dit kan een standaardveld of aangepast veld in ‘ProdTable’ zijn. De configuratie verschilt vaak per bedrijf. Voorbeelden NormaalHoogUrgent | |||
| Productietype ProductionType | De indeling van de productieorder, bijvoorbeeld standaard, herstelwerk of projectmatig. | ||
| Beschrijving Het productietype deelt de order in op basis van het doel. Een order van het type ‘Standaard’ is bijvoorbeeld bedoeld voor reguliere voorraadproductie. Een order van het type ‘Herstelwerk’ is bedoeld om een defect in een eerder geproduceerd artikel te verhelpen. Een order van het type ‘Project’ hoort bij een specifiek klantproject. Dit attribuut is belangrijk om analyses goed te kunnen vergelijken. Het proces voor een order voor herstelwerk verschilt van dat voor een standaardorder. Door de procesanalyse uit te splitsen naar productietype, vergelijk je gelijksoortige orders en krijg je inzicht in de specifieke uitdagingen en processtappen per type. Waarom dit belangrijk is Met dit attribuut kun je de analyse uitsplitsen. Ordertypen zoals ‘Standaard’ en ‘Herstelwerk’ volgen vaak verschillende processen en hebben andere prestatieverwachtingen. Waar vind je dit? Dit is het veld ‘ProdType’ in de tabel ‘ProdTable’. Voorbeelden StandaardHerstelwerkProject | |||
| Productnummer ProductNumber | De unieke identificatie van het artikel dat wordt geproduceerd. | ||
| Beschrijving Het productnummer, of artikel-ID, geeft aan welk gereed product de productieorder moet opleveren. Het koppelt het productieproces aan het specifieke product, inclusief de bijbehorende stuklijst en route-instructies. Door het proces per productnummer te analyseren, ontdek je verschillen in de levenscyclus van de productie per product. Zo kan blijken dat bepaalde producten langere doorlooptijden hebben, meer herstelwerk vragen of vaker vertraging oplopen. Die informatie is nuttig voor product- en procesengineers. Waarom dit belangrijk is Hiermee kun je procesverschillen per geproduceerd product analyseren en productspecifieke bottlenecks of kwaliteitsproblemen opsporen. Waar vind je dit? Dit is het veld ‘ItemId’ in de tabel ‘ProdTable’. Voorbeelden FG-1001FG-2050ASSY-500B | |||
| Status van productieorder ProductionOrderStatus | De huidige status van de productieorder in de levenscyclus. | ||
| Beschrijving De status van de productieorder geeft aan hoe ver de order is in de productielevenscyclus. Veelvoorkomende statussen in Dynamics 365 zijn Created, Estimated, Scheduled, Released, Started, Reported as finished en Ended. Dit attribuut laat zien waar elke order op een bepaald moment staat. Bij process mining zijn statuswijzigingen een belangrijke manier om activiteiten te definiëren en de processtroom te begrijpen. Je kunt ermee filteren op orders met een bepaalde status, de tijd per status analyseren en orders opsporen die vastlopen of vertraging hebben. Waarom dit belangrijk is Dit attribuut geeft op hoofdlijnen de voortgang van een order weer. Je kunt het gebruiken om te filteren, conformancechecks uit te voeren en de tijd in verschillende productiefasen te analyseren. Waar vind je dit? Dit is het veld ‘ProdStatus’ in de tabel ‘ProdTable’. Voorbeelden IngeplandVrijgegevenGestartAfgesloten | |||
| Werkelijke hoeveelheid ActualQuantity | De hoeveelheid goederen die voor de order is geproduceerd en als gereed is gemeld. | ||
| Beschrijving De werkelijke hoeveelheid is het aantal eenheden dat voor een productieorder is afgerond en de kwaliteitscontroles heeft doorstaan. Deze waarde wordt vastgelegd wanneer de productie als gereed wordt gemeld. Met dit attribuut analyseer je de productieopbrengst en efficiëntie. Door de werkelijke hoeveelheid te vergelijken met de geplande hoeveelheid, kun je het uitvalpercentage berekenen en productieverlies onderzoeken. De waarde is ook een belangrijk onderdeel van analyses van de doorvoer en dashboards voor capaciteitsbenutting. Waarom dit belangrijk is Deze waarde is essentieel voor het berekenen van de productieopbrengst, het uitvalpercentage en de werkelijke doorvoer. Zo krijg je inzicht in de efficiëntie en prestaties van de productie. Waar vind je dit? Deze waarde komt vaak uit het veld ‘QtyGood’ in de tabel ‘ProdTable’ of uit gerelateerde journaalboekingstabellen wanneer een order als gereed wordt gemeld. Voorbeelden 100985000 | |||
| Beschikbaarheid van materialen MaterialAvailabilityStatus | Geeft aan of de benodigde grondstoffen voor de productieorder beschikbaar zijn. | ||
| Beschrijving Dit attribuut houdt bij of de onderdelen voor de productie beschikbaar zijn. Mogelijke statussen zijn bijvoorbeeld ‘Beschikbaar’, ‘In bestelling’ of ‘Tekort’. Planners gebruiken deze informatie om te bepalen of een productieorder volgens planning kan beginnen. Met process mining kun je met dit attribuut de oorzaken van vertraging bij de start van de productie onderzoeken. Door de status te vergelijken met de tijd tussen ‘Productieorder vrijgegeven’ en ‘Productie gestart’, kunnen analisten meten hoeveel materiaaltekorten bijdragen aan afwijkingen van de planning en aan de totale doorlooptijd. Dit ondersteunt het dashboard ‘Impact van vertraging door materiaalbeschikbaarheid’. Waarom dit belangrijk is Dit helpt om vertraging bij de start van de productie door materiaaltekorten te begrijpen en te meten, en om de prestaties van de toeleveringsketen te koppelen aan de productie-efficiëntie. Waar vind je dit? Deze status staat vaak niet in één veld. Je kunt de status afleiden door in de tabel ‘InventSum’ de beschikbare voorraad te controleren van alle artikelen in de stuklijst (BOM) van de productieorder. Voorbeelden Volledig beschikbaarGedeeltelijk tekortNiet beschikbaar | |||
| Eindtijd EndTime | De exacte timestamp waarop de activiteit is afgerond. | ||
| Beschrijving De eindtijd geeft aan wanneer een specifieke activiteit is afgerond. De starttijd geeft aan wanneer de activiteit begon. Met de eindtijd kun je de werkelijke duur of verwerkingstijd van die stap bepalen. Als je in process mining zowel een starttijd als een eindtijd voor activiteiten hebt, kun je wachttijd en verwerkingstijd nauwkeuriger analyseren. Zo zie je hoeveel tijd actief aan een activiteit is besteed en hoeveel tijd er is gewacht tot de volgende stap begon. Dat helpt bij een gedetailleerde bottleneckanalyse. Waarom dit belangrijk is Hiermee bereken je de verwerkingstijd van een activiteit en onderscheid je die van de wachttijd. Zo kun je bottlenecks nauwkeuriger analyseren. Waar vind je dit? Deze waarde wordt vaak afgeleid. De eindtijd van ‘Productie gestart’ kan bijvoorbeeld gelijk zijn aan de starttijd van ‘Bewerking afgerond’. In sommige logs wordt een eindtijd expliciet vastgelegd. Voorbeelden 2023-04-15T09:30:45Z2023-04-15T12:00:00Z2023-04-16T15:00:10Z | |||
| Geplande hoeveelheid PlannedQuantity | De geplande hoeveelheid van het te produceren artikel. | ||
| Beschrijving De geplande hoeveelheid is het beoogde aantal eenheden dat voor een productieorder wordt gemaakt. Deze hoeveelheid wordt meestal bepaald door de vraag uit verkooporders, de veiligheidsvoorraad of de hoofdplanning. Dit attribuut is het uitgangspunt voor prestatiemaatstaven zoals productieopbrengst en uitval. Door de geplande hoeveelheid te vergelijken met de werkelijke hoeveelheid, kunnen planners de productie-efficiëntie en afwijkingen in materiaalgebruik volgen. Dit is een essentieel gegeven voor capaciteitsplanning en materiaalbehoefteplanning. Waarom dit belangrijk is Dit is de uitgangshoeveelheid voor het meten van de productieopbrengst en het uitvalpercentage, door deze te vergelijken met de werkelijk geproduceerde hoeveelheid. Waar vind je dit? Dit is het veld ‘QtySched’ in de tabel ‘ProdTable’. Voorbeelden 1005000250 | |||
| Kwaliteitsordernummer QualityOrderNumber | De identificatie van een kwaliteitscontroleorder die aan de productieorder is gekoppeld. | ||
| Beschrijving Als een kwaliteitscontrole nodig is, wordt in Dynamics 365 vaak een kwaliteitsorder aangemaakt. Dit attribuut koppelt het productieproces aan het kwaliteitsborgingsproces en bevat de ID van de bijbehorende kwaliteitsorder. Dankzij deze koppeling krijg je een vollediger beeld van het hele proces, inclusief de stappen voor kwaliteitsbeheer. Je kunt analyseren hoe kwaliteitscontroles de doorlooptijden van de productie beïnvloeden, vertragingen in het kwaliteitsproces opsporen en nagaan hoe vaak verschillende producten of productielijnen worden gecontroleerd. Waarom dit belangrijk is Dit koppelt het productieproces aan het kwaliteitsborgingsproces, zodat je kunt analyseren hoe kwaliteitscontroles de totale doorlooptijden beïnvloeden. Waar vind je dit? Deze informatie staat in tabellen voor kwaliteitsbeheer, zoals ‘InventQualityOrderTable’, en moet worden gekoppeld aan de productieorder. Voorbeelden QO-00123QO-00124QO-00125 | |||
| Op tijd gestart ProductionScheduleAdherence | Een booleaanse vlag die waar is als de productieorder op of vóór de geplande startdatum is begonnen. | ||
| Beschrijving Dit berekende attribuut geeft met een eenvoudige ja/nee-indicator aan of de productie volgens planning is gestart. Het vergelijkt de werkelijke starttijd (de gebeurtenis ‘Productie gestart’) met het attribuut ‘PlannedStartDate’. Deze vlag is handig voor overzichtelijke dashboards en KPI’s, zoals het percentage productieorders dat volgens planning start. Je kunt eenvoudig filteren en totalen berekenen om te zien welk percentage orders op tijd begint. Ook kun je de kenmerken van vertraagde orders analyseren, zonder dat je in de analysetool zelf datums hoeft te vergelijken. Waarom dit belangrijk is Dit vereenvoudigt rapportages en KPI-berekeningen voor het volgen van de planning. Je kunt eenvoudig orders filteren en tellen die op tijd of te laat zijn gestart. Waar vind je dit? Dit is een berekende metriek. De logica is: ‘Production Started’ EventTime <= PlannedStartDate. Voorbeelden truefalse | |||
| Productielijn ProductionLine | De specifieke productielijn, het werkcentrum of de bronnengroep die aan de productieorder is toegewezen. | ||
| Beschrijving De productielijn geeft aan welke machine, cel of groep bronnen de productieactiviteiten uitvoert. Dit is een gedetailleerder niveau dan de productielocatie. Door het proces per productielijn te analyseren, kun je de capaciteit en benutting nauwkeurig onderzoeken. Je ziet welke werkcentra overbelast zijn, vergelijkt de efficiëntie van lijnen die hetzelfde product maken en spoort bottlenecks op die aan specifieke bronnen zijn gekoppeld en niet zichtbaar zijn op locatieniveau. Waarom dit belangrijk is Hiermee kun je de benutting en prestaties van bronnen gedetailleerd analyseren en overbelaste werkcentra of inefficiënte lijnen opsporen. Waar vind je dit? Deze informatie staat vaak in het veld ‘WrkCtrId’ van de transacties voor productieroutes (de tabellen ‘ProdRoute’ of ‘ProdRouteTrans’). Voorbeelden LIJN-01LIJN-02CNC-A | |||
| Revisienummer ProductionOrderRevisionNumber | Het aantal keren dat een productieplan na de eerste aanmaak is aangepast. | ||
| Beschrijving Dit attribuut houdt bij hoe vaak een productieorder is herzien of ingrijpend gewijzigd, bijvoorbeeld in hoeveelheid, datums of route, nadat de order is ingepland of vrijgegeven. Een hoger aantal wijst op meer instabiliteit in de planning. Dit is een directe maatstaf voor de KPI ‘Percentage herziene productieplannen’. Met deze analyse kun je oorzaken van instabiliteit in de planning opsporen, zoals frequente veranderingen in de vraag of een onnauwkeurige eerste planning. Ook meet je hoeveel herstelwerk en herplanning nodig is, wat vaak tot inefficiëntie leidt. Waarom dit belangrijk is Dit meet de stabiliteit van de planning en ondersteunt de KPI ‘Percentage herziene productieplannen’. Zo worden processen met veel wijzigingen en herstelwerk zichtbaar. Waar vind je dit? Dit is een afgeleid attribuut. Je berekent het door per case te tellen hoe vaak de activiteit ‘Productieorder aangepast’ voorkomt. Voorbeelden 012 | |||
| Vertraging bij productiestart ProductionStartDelay | De tijd tussen het vrijgeven van de order en de daadwerkelijke start van de productie. | ||
| Beschrijving Deze berekende duur geeft de wachttijd of wachtrijtijd op de productievloer weer. Het is het tijdsverschil tussen de activiteit ‘Productieorder vrijgegeven’ en de activiteit ‘Productie gestart’. Deze KPI is belangrijk voor het dashboard ‘Analyse van vertraging door toewijzing van bronnen’. De KPI maakt vertraging zichtbaar nadat de planning is afgerond en de order klaar is om te worden uitgevoerd. Hoge waarden kunnen wijzen op problemen met de beschikbaarheid van bronnen, het klaarzetten van materialen of de informatieoverdracht naar de productievloer. Zo weet je waar verbeteringen in de bedrijfsvoering nodig zijn. Waarom dit belangrijk is Deze metriek meet precies de vertraging tussen het moment waarop een order klaar is en de start ervan. Zo spoor je bottlenecks op die te maken hebben met de beschikbaarheid van bronnen of de gereedheid van de productievloer. Waar vind je dit? Dit is een berekende metriek: Timestamp(‘Production Started’) - Timestamp(‘Production Order Released’). Voorbeelden 0 d 4 u 15 min1 d 2 u 0 min0 d 1 u 30 min | |||
Activiteiten voor productieplanning
| Activiteit | Beschrijving | ||
|---|---|---|---|
| Productie gereedgemeld | Dit geeft aan dat de opgegeven hoeveelheid van het product fysiek is geproduceerd en dat de gereedproducten nu op voorraad liggen. Deze statuswijziging leidt tot voorraadtransacties. | ||
| Waarom dit belangrijk is Dit markeert het einde van de fysieke productie. De gebeurtenis is nodig om het percentage orders dat op tijd wordt afgerond, de werkelijke productieduur en de doorvoer te berekenen. Waar vind je dit? Deze gebeurtenis wordt vastgelegd wanneer de status van de productieorder in de ProdTable verandert in ‘Reported as finished’. Dit gebeurt wanneer een journaal voor het gereedmelden van de productie wordt geboekt. Vastleggen Bepaal de timestamp waarop het veld ProdStatus in de ProdTable verandert in ‘Reported as finished’. Gebeurtenistype inferred | |||
| Productie gestart | Dit markeert het begin van de fysieke productie van de order op de productievloer. Dit wordt vaak vastgelegd wanneer de eerste bewerking of taak wordt gestart via een terminal op de productievloer of door een journaalboeking. | ||
| Waarom dit belangrijk is Deze activiteit geeft de werkelijke starttijd van de productie. Die is belangrijk om startvertragingen, het volgen van de planning en de werkelijke doorlooptijden te berekenen. Waar vind je dit? Deze gebeurtenis wordt vastgelegd wanneer de status van de productieorder in de ProdTable verandert in ‘Started’. Dit gebeurt vaak wanneer een werkkaart- of routekaartjournaal voor de eerste bewerking wordt geboekt. Vastleggen Bepaal de timestamp waarop het veld ProdStatus in de ProdTable verandert in ‘Started’. Gebeurtenistype inferred | |||
| Productieorder aangemaakt | Deze activiteit markeert het aanmaken van een productieorder. Daarmee wordt de vraag naar een bepaalde hoeveelheid van een product vastgelegd. Dit gebeurt meestal wanneer een geplande productieorder definitief wordt gemaakt en als officieel record met een unieke ID in het systeem wordt aangemaakt. | ||
| Waarom dit belangrijk is Dit is de belangrijkste startgebeurtenis van het productieproces. Door de tijd vanaf het aanmaken tot de volgende stappen te analyseren, kun je de totale doorlooptijd en efficiëntie van de planning meten. Waar vind je dit? Deze gebeurtenis wordt afgeleid van de aanmaaktimestamp van de productieorder in de ProdTable. De beginstatus is meestal ‘Created’. Vastleggen Leg de aanmaaktimestamp vast van een nieuwe regel in de ProdTable waarvoor ProdStatus de waarde ‘Created’ heeft. Gebeurtenistype inferred | |||
| Productieorder afgesloten | Dit is de laatste activiteit en staat voor de financiële afsluiting van de productieorder. Alle kosten zijn berekend en geboekt. Er kunnen geen transacties meer op de order worden geboekt. | ||
| Waarom dit belangrijk is Dit markeert de volledige afronding van de order, zowel fysiek als financieel. Vertraging tussen ‘Reported as Finished’ en ‘Ended’ kan wijzen op problemen met de kostentoerekening of financiële afsluiting. Waar vind je dit? Deze laatste statuswijziging wordt vastgelegd wanneer het veld ‘ProdStatus’ in de tabel ‘ProdTable’ de waarde ‘Ended’ krijgt. Dit gebeurt wanneer de kosten worden berekend en de order wordt afgesloten. Vastleggen Bepaal de timestamp waarop het veld ProdStatus in de ProdTable verandert in ‘Ended’. Gebeurtenistype inferred | |||
| Productieorder ingepland | Deze activiteit markeert het inplannen van de productieorder. Daarbij worden specifieke middelen, datums en tijden toegewezen aan de bewerkingen. Dit kan gaan om het inplannen van bewerkingen of om een gedetailleerdere taakplanning. | ||
| Waarom dit belangrijk is Inplannen is belangrijk voor capaciteitsplanning en middelenbeheer. Door te analyseren hoelang het duurt om orders in te plannen en hoeveel tijd er verstrijkt tot de vrijgave, worden beperkingen in de planning en capaciteit zichtbaar. Waar vind je dit? Deze gebeurtenis wordt vastgelegd wanneer de status van de productieorder in de ProdTable verandert in ‘Scheduled’. Dit gebeurt wanneer een gebruiker een planningsfunctie uitvoert. Vastleggen Bepaal de timestamp waarop het veld ProdStatus in de ProdTable verandert in ‘Scheduled’. Gebeurtenistype inferred | |||
| Productieorder vrijgegeven | Deze activiteit geeft aan dat de productieorder is goedgekeurd en mag worden uitgevoerd op de productievloer. Dit is een belangrijke mijlpaal waarbij documenten zoals werkkaarten en routekaarten worden vrijgegeven. | ||
| Waarom dit belangrijk is Dit is de officiële overdracht van planning naar uitvoering. De tijd tussen ‘Scheduled’ en ‘Released’ kan wijzen op vertraging bij goedkeuringen of eindcontroles. De tijd tussen ‘Released’ en ‘Started’ geeft aan hoe snel de productievloer klaar is om te beginnen. Waar vind je dit? Deze gebeurtenis wordt vastgelegd wanneer de status van de productieorder in de ProdTable verandert in ‘Released’. Dit gebeurt door een handmatige of geautomatiseerde gebruikersactie. Vastleggen Bepaal de timestamp waarop het veld ProdStatus in de ProdTable verandert in ‘Released’. Gebeurtenistype inferred | |||
| Bewerking afgerond | Deze activiteit geeft aan dat een afzonderlijke productiehandeling of stap in de productieroute is afgerond. Een productieorder bevat meestal meerdere van deze gebeurtenissen. | ||
| Waarom dit belangrijk is Door de tijd tussen bewerkingen te analyseren, kun je bottlenecks in het productieproces zelf opsporen. Dit geeft een gedetailleerder beeld van de processtroom op de productievloer. Waar vind je dit? Dit is een expliciete gebeurtenis die wordt vastgelegd wanneer routekaartjournalen (ProdJournalRoute) voor elke bewerking worden geboekt. De gebeurtenis geeft aan dat de stap is afgerond. Vastleggen Leg de boektimestamp vast van elk ProdJournalRoute-record dat bij de productieorder hoort. Gebeurtenistype explicit | |||
| Kwaliteitsinspectie goedgekeurd | Dit geeft aan dat een kwaliteitsorder voor de productierun met succes is afgerond en gevalideerd. Daarmee is bevestigd dat de geproduceerde artikelen aan de vereiste kwaliteitsnormen voldoen. | ||
| Waarom dit belangrijk is Dit is een belangrijke mijlpaal in het kwaliteitsproces. De tijd tussen het aanmaken van de kwaliteitsorder en het goedkeuren van de inspectie laat zien hoe efficiënt het QA-team werkt. Waar vind je dit? Dit wordt afgeleid van een statuswijziging naar ‘Pass’ in het record van de InventQualityOrderTable. De specifieke statuswaarde kan verschillen. Vastleggen Bepaal de timestamp waarop de status van het bijbehorende InventQualityOrderTable-record wordt bijgewerkt naar ‘Pass’. Gebeurtenistype inferred | |||
| Kwaliteitsorder aangemaakt | Er is een kwaliteitsorder aangemaakt om de output van de productieorder te inspecteren. Deze gebeurtenis markeert het begin van de kwaliteitscontrole van de geproduceerde goederen. | ||
| Waarom dit belangrijk is Door het kwaliteitsproces te volgen, krijg je zicht op de totale doorlooptijd. Vertraging bij de kwaliteitsinspectie kan verhinderen dat goederen worden verzonden of in volgende processen worden gebruikt. Waar vind je dit? Dit is een expliciete gebeurtenis die wordt afgeleid van het aanmaken van een record in de InventQualityOrderTable dat naar de productieorder verwijst. Vastleggen Leg de aanmaaktimestamp vast van de kwaliteitsorder in de InventQualityOrderTable die aan de productieorder-ID is gekoppeld. Gebeurtenistype explicit | |||
| Materialen verzameld voor productie | Dit geeft aan dat de grondstoffen voor de productieorder uit het magazijn zijn verzameld en klaarstaan voor gebruik. De gebeurtenis wordt vastgelegd wanneer het verzamelen van grondstoffen of het boeken van een verzamelbonjournaal is afgerond. | ||
| Waarom dit belangrijk is Deze activiteit is een belangrijke voorwaarde om de productie te starten. Vertraging tussen het inplannen en het verzamelen van materialen kan wijzen op problemen in de magazijnprocessen of de beschikbaarheid van materialen. Waar vind je dit? Dit is meestal een expliciete gebeurtenis in magazijnbeheertabellen (WHSWorkTable) of voorraadjournalen (InventJournalTrans) die aan de productieorder zijn gekoppeld. Vastleggen Leg de boektimestamp vast van het verzamelbonjournaal dat bij de productieorder hoort. Gebeurtenistype explicit | |||
| Productieorder aangepast | Dit is een belangrijke wijziging aan de productieorder nadat deze is vrijgegeven, zoals een aanpassing van de hoeveelheid of de datum. De gebeurtenis wordt afgeleid door belangrijke velden vóór en na een wijziging te vergelijken. | ||
| Waarom dit belangrijk is Veel aanpassingen wijzen op instabiliteit in de planning of een wisselende vraag. Dat leidt tot inefficiënties en herstelwerk. Zo kun je meten hoe vaak zulke wijzigingen voorkomen en wat de gevolgen zijn. Waar vind je dit? Dit wordt afgeleid door wijzigingslogboeken te analyseren of versies van het ProdTable-record te vergelijken voor velden zoals ‘QtySched’ of ‘SchedEnd’, nadat de orderstatus ‘Released’ is geworden. Vastleggen Spoor wijzigingen op in belangrijke velden, zoals hoeveelheid en datums, in de ProdTable na de timestamp van de gebeurtenis ‘Released’. Gebeurtenistype calculated | |||
| Productieorder geannuleerd | Dit geeft aan dat een productieorder is geannuleerd voordat deze was afgerond. Dit is een alternatieve, niet-geslaagde afloop van het proces. | ||
| Waarom dit belangrijk is Door annuleringen te volgen, kun je oorzaken van mislukte processen opsporen, zoals veranderingen in de vraag of planningsfouten. Veel annuleringen kunnen wijzen op structurele problemen. Waar vind je dit? Dit is een alternatieve eindstatus die wordt afgeleid van een statuswijziging. De exacte status kan verschillen. Vaak wordt de orderstatus teruggezet naar een eerdere status en wordt de order als geannuleerd gemarkeerd. Vastleggen Spoor een statuswijziging op die op annulering wijst. Mogelijk is hiervoor een specifieke systeemanalyse nodig. Gebeurtenistype inferred | |||
| Productieorder geraamd | Dit is de berekening van het geschatte materiaalverbruik en de geschatte kosten voor de productieorder. Deze planningsstap zorgt ervoor dat de financiële en materiële vereisten duidelijk zijn voordat je verdergaat. | ||
| Waarom dit belangrijk is Vertraging bij het ramen kan een grote bottleneck in de planningsfase vormen. Door deze activiteit te volgen, kun je inefficiënties in de kosten- en materiaalplanning opsporen. Waar vind je dit? Deze gebeurtenis wordt vastgelegd wanneer de status van de productieorder in de ProdTable verandert in ‘Estimated’. Dit gebeurt wanneer een gebruiker de functie ‘Estimate’ voor de order uitvoert. Vastleggen Bepaal de timestamp waarop het veld ProdStatus in de ProdTable verandert in ‘Estimated’. Gebeurtenistype inferred | |||
Extractiegidsen
Stappen
- Open de Data Management-workspace: Meld je aan bij Microsoft Dynamics 365 Finance and Operations. Zoek via de zoekbalk de workspace
Data managementen open deze. - Maak een nieuw exportproject: Selecteer in de workspace de tegel
Exportom een data-exportproject aan te maken. Geef het project een duidelijke naam, bijvoorbeeldProcessMind_Production_Orders. - Kies het exportbestandsformaat: Kies in de projectinstellingen het gewenste dataformaat, zoals CSV of Excel. Stel de optie
Entityin en geef de formaatgegevens op. CSV wordt aanbevolen vanwege de prestaties en compatibiliteit. - Voeg de benodigde data-entiteiten toe: Voeg de data-entiteiten toe die nodig zijn om alle gebeurtenissen rond productieorders vast te leggen. Voeg de volgende entiteiten toe:
Productieorders,Production order route transactions,Inventory quality ordersenProduction picking list journal lines. Selecteer voor elke entiteit alle relevante velden, zoals beschreven in het querygedeelte. - Pas datafilters toe: Gebruik voor elke entiteit de optie
Filterom de data-export af te bakenen. Filter minimaal opCompanyom de juiste juridische entiteit te selecteren. Het is sterk aan te raden ook een datumbereikfilter toe te passen op een belangrijk datumveld, zoalsCreation datebij de entiteitProductieorders. Zo blijft de hoeveelheid data beheersbaar, bijvoorbeeld door alleen de afgelopen 6 maanden te selecteren. - Stel incrementele exports in (optioneel): Stel het project voor doorlopende analyses in op incrementele exports. Dit kan door wijzigingen in de bronentiteiten bij te houden. Zo haal je sinds de vorige export alleen nieuwe of gewijzigde records op en verkort je de exporttijd aanzienlijk.
- Voer de exporttaak uit: Start de export zodra het project is ingesteld door in het actievenster op
Exportte klikken. Je kunt de export meteen uitvoeren of als terugkerende batchtaak inplannen. - Download de geëxporteerde bestanden: Ga na afloop van de exporttaak naar de taakgeschiedenis. Download het pakket. Dit ZIP-bestand bevat aparte databestanden voor elke opgenomen entiteit.
- Zet de data om in een event log: De geëxporteerde bestanden bevatten ruwe tabeldata, geen opgemaakt event log. Gebruik een externe tool, zoals een Python-script, Power Query in Excel of Power BI, of een ETL-tool om de bestanden te verwerken en samen te voegen. Pas de transformatielogica uit het querygedeelte toe om datum- en statusvelden uit de verschillende entiteiten om te zetten in één event log-bestand met één rij per activiteit.
- Stel het definitieve event log samen: Zorg dat het getransformeerde CSV-bestand de volgende verplichte kolommen bevat:
ProductionOrderNumber,ActivityName,EventTime,SourceSystemenLastDataUpdate, plus eventuele aanbevolen attributen. Het bestand moet een kopregel hebben en klaar zijn om naar ProcessMind te uploaden.
Configuratie
- Belangrijke data-entiteiten: Voor deze extractie exporteer je verschillende entiteiten en voeg je die later samen. De belangrijkste entiteiten zijn
Productieorders(ProdTable),Production order route transactions(ProdRouteTrans) enInventory quality orders(InventQualityOrderTable). - Filter op datumbereik: Pas altijd een datumfilter toe om de hoeveelheid data beheersbaar te houden. Filter bij voorkeur de entiteit
ProductieordersopCreation date(CREATEDDATETIME) en selecteer de afgelopen 3 tot 6 maanden. Zo haal je recente, volledige processen op zonder het systeem te overbelasten. - Bedrijfsfilter: Stel een filter in voor het specifieke bedrijf of de juridische entiteit die je wilt analyseren. Gebruik hiervoor de optie
Filterbij elke entiteit in het exportproject. - Volledige of incrementele export: Voor de eerste extractie is een volledige export nodig. Voor volgende updates is het sterk aan te raden wijzigingsregistratie voor de entiteiten in te stellen en incrementele exports uit te voeren. Zo verbeter je de prestaties en beperk je de hoeveelheid data.
- Vereisten: De gebruiker die de export uitvoert, moet de juiste beveiligingsrollen hebben. Dit is doorgaans
Data management administratorof een rol met toegangsrechten voor de benodigde data-entiteiten.
a Voorbeeldquery sql
/*
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 Stappen
- Stel BYOD in Dynamics 365 in: Controleer of de functie 'Bring your own database' is ingesteld in je Dynamics 365 Finance and Operations-omgeving. Hiervoor stel je een Azure SQL Database in en configureer je de data-export vanuit Dynamics 365.
- Publiceer de benodigde entiteiten: Ga vanuit de workspace 'Data management' naar 'Data entities'. Zoek de volgende belangrijke entiteiten en publiceer ze naar je BYOD-database: ProdTable, ProdRouteTrans, InventPickingListJour en InventQualityOrderTable. Stel ze in voor terugkerende export.
- Controleer de datasynchronisatie: Controleer of de data van de gepubliceerde entiteiten goed en regelmatig wordt gesynchroniseerd met de Azure SQL Database. Bekijk de geschiedenis van exporttaken op fouten.
- Maak verbinding met de BYOD-database: Gebruik een SQL-client, zoals SQL Server Management Studio (SSMS) of Azure Data Studio, om verbinding te maken met de Azure SQL Database waarin je Dynamics 365-data staat.
- Bereid de SQL-query voor: Open een nieuw queryvenster en kopieer de volledige SQL-query uit dit document.
- Stel de queryparameters in: Zoek in de query de tijdelijke waarden. Vervang '{StartDate}', '{EndDate}' en '{CompanyCode}' door het gewenste datumbereik en de DataAreaId van het bedrijf dat je wilt analyseren.
- Voer de query uit: Voer de aangepaste SQL-query uit op de BYOD-database. De uitvoeringstijd hangt af van de hoeveelheid data en het gekozen datumbereik.
- Controleer de resultaten: Controleer na afloop of de uitvoer de verwachte kolommen en data voor alle geëxtraheerde activiteiten bevat. De resultatenset is het event log.
- Exporteer het event log: Exporteer de queryresultaten naar een CSV-bestand. De meeste SQL-clients hebben een ingebouwde functie om resultaten rechtstreeks naar een bestand op te slaan.
- Maak het bestand klaar voor ProcessMind: Zorg dat het geëxporteerde CSV-bestand UTF-8-codering gebruikt en dat de kolomkoppen overeenkomen met de attribuutnamen die ProcessMind nodig heeft, zoals CaseId, Activity en Timestamp. De query gebruikt al de juiste aliassen.
Configuratie
- Belangrijke data-entiteiten: De query gebruikt vooral de volgende entiteiten die naar je BYOD-omgeving zijn geëxporteerd:
PRODTABLE: Bevat de belangrijkste gegevens en status van de productieorderkop.PRODROUTETRANS: Bevat gegevens over afzonderlijke productieactiviteiten en de afronding daarvan.INVENTPICKINGLISTJOUR: Registreert het verzamelen van materialen voor productieorders.INVENTQUALITYORDERTABLE: Houdt kwaliteitsorders bij die aan productie zijn gekoppeld.
- Datumbereik: Begin bij voorkeur met een beperkt datumbereik, bijvoorbeeld 3 tot 6 maanden aan data. Zo blijft de query goed uitvoerbaar. De query filtert op de aanmaakdatum van de productieorder (
CREATEDDATETIMEuitPRODTABLE). - Filter op bedrijfscode: Met het veld
DATAREAIDfilter je op een specifieke juridische entiteit of een specifiek bedrijf. Vervang de tijdelijke waarde'{CompanyCode}'door de juiste ID, bijvoorbeeld 'usmf'. - Vereisten: Voor deze methode heb je systeembeheerderstoegang tot Dynamics 365 Finance and Operations nodig om BYOD in te stellen. Ook heb je Contributor-rechten nodig voor de Azure SQL Database om queries uit te voeren.
- Prestaties: Voer queries voor zeer grote datasets over meerdere jaren of bedrijven bij voorkeur buiten piekuren uit. Je kunt de extractie ook opdelen in kleinere perioden en de resultaten later samenvoegen.
a Voorbeeldquery 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}'; Stappen
- Controleer of Power BI Desktop of een ander goedgekeurd programma met Power Query beschikbaar is en of de gebruiker leesrechten heeft voor de benodigde Microsoft Dynamics 365 Manufacturing-data-entiteiten. Controleer ook de URL van de omgeving, de juridische entiteit of het bedrijfsbereik en de goedgekeurde aanmeldmethode.
- Selecteer in Power BI Desktop Get data en kies de goedgekeurde Dynamics 365-connector of de OData- of Dataverse-verbinding die binnen de organisatie wordt gebruikt. Gebruik [Your Dynamics 365 environment connection] en [Your credentials] zoals de beheerder die heeft ingesteld. Ga er niet van uit dat elke implementatie dezelfde entiteit, hetzelfde eindpunt of hetzelfde menupad heeft.
- Selecteer de entiteit voor de kop van de productieorder, de entiteit voor productieorderbewerkingen of -routes, de entiteit voor materiaalverzameling of picklijsten, de entiteiten voor productieboekingen, de entiteit voor kwaliteitsorders en eventuele goedgekeurde entiteiten voor controles, geschiedenis of wijzigingsregistratie die nodig zijn om statuswijzigingen vast te stellen. Vervang elke bronverwijzing in de query door de bijbehorende entiteit of query in je omgeving.
- Baken de extractie af met [Start date parameter], [End date parameter] en [Your company or legal entity filter]. Beperk de query tot productieorders voor de benodigde fabrieken, producten, ordertypen en statussen. Behoud de brontimestamps die nodig zijn om aanmaak, raming, planning, materiaalverzameling, vrijgave, aanpassing, start, afronding van bewerkingen, gereedmelding, kwaliteitscontrole, afsluiting en annulering van elkaar te onderscheiden.
- Standaardiseer in Power Query de namen en gegevenstypen van bronkolommen. Zet gebeurtenistimestamps om naar één consistent datum- en tijdtype en normaliseer ID’s, statuswaarden, bedrijfswaarden, fabriekswaarden, productnummers, gebruikers, hoeveelheden en prioriteiten. Geef een null-waarde terug als een bronveld ontbreekt, in plaats van een waarde te verzinnen. Gebruik het productieordernummer als case-ID.
- Maak voor elke activiteit een eventtabel. Elke tabel moet de volgende waarden bevatten: ProductionOrderNumber, ActivityName, EventTime, SourceSystem, LastDataUpdate, ProductionOrderStatus, PlannedStartDate, PlannedEndDate, UserId, ProductionPlant, ProductNumber, ProductionType, ActualQuantity en ProductionPriority. De activiteitsnaam moet een vaste waarde zijn die overeenkomt met een van de 13 vereiste namen.
- Neem Production Order Adjusted alleen op als dit blijkt uit een goedgekeurde bron met de status vóór en na de wijziging, zoals een geschiedenis-, controle- of wijzigingsregistratiebron. Vergelijk relevante velden, zoals hoeveelheid, geplande datums, status, fabriek, product en prioriteit. Voeg voor elke kwalificerende wijziging een aanpassingsregel toe met de geregistreerde wijzigingstimestamp. Leid een aanpassing niet alleen af uit de huidige momentopname van de productieorder.
- Voeg alle 13 activiteitstabellen samen met UNION ALL. Verwijder regels zonder productieordernummer of gebeurtenistimestamp, maar verwijder geen geldige herhaalde afrondingen van bewerkingen, aanpassingen of kwaliteitsevents. Sorteer op ProductionOrderNumber en EventTime en gebruik waar mogelijk een vaste secundaire sorteervolgorde.
- Laad de resulterende tabel in Power BI of exporteer deze als CSV of een ander door ProcessMind ondersteund eventlogformaat. Zorg dat de geëxporteerde kolomkoppen exact als volgt zijn: ProductionOrderNumber, ActivityName, EventTime, SourceSystem, LastDataUpdate, ProductionOrderStatus, PlannedStartDate, PlannedEndDate, UserId, ProductionPlant, ProductNumber, ProductionType, ActualQuantity en ProductionPriority.
- Controleer vóór het uploaden naar ProcessMind of elke vereiste activiteit als afzonderlijke regel in het event log staat, timestamps dezelfde tijdzone gebruiken, ProductionOrderNumber is ingevuld en LastDataUpdate de extractievernieuwing aangeeft. ProcessMind leest het event log zoals het is en leidt ontbrekende gebeurtenissen niet af.
Configuratie
- Verbinding: Gebruik de goedgekeurde Power Query-connector en aanmeldmethode voor de Dynamics 365-omgeving. Vervang [Your Dynamics 365 environment connection] en [Your credentials] door waarden die binnen de organisatie zijn goedgekeurd.
- Bronentiteiten: Selecteer de beschikbare entiteiten voor productieorderkoppen, bewerkingen of routes, materiaalverzameling of picklijsten, productieboekingen, kwaliteitsorders en goedgekeurde controles of wijzigingsregistratie. De namen en beschikbaarheid van entiteiten verschillen per implementatie. Controleer dit in de metadatabrowser.
- Datumbereik: Begin met een periode van 3 tot 6 maanden. Gebruik waar mogelijk EventTime-filters bij de bron en verruim de periode voor controles van langlopende productieorders of historische statusovergangen.
- Filters voor bedrijf en fabriek: Pas [Your company or legal entity filter] toe en gebruik waar nodig ook het vereiste filter voor de productiefabriek. Gebruik geen algemeen bedrijfsfilter als de omgeving meerdere juridische entiteiten met overlappende ordernummers bevat.
- Filters voor productieorders: Filter op de benodigde typen productieorders, producten, fabrieken, statussen en ordernummerreeksen. Filter geannuleerde of afgesloten orders niet weg als die uitkomsten nodig zijn voor de procesanalyse.
- Gebeurtenissen opnemen: Behoud herhaalde gebeurtenissen voor afronding van bewerkingen, materiaalverzameling, kwaliteit en aanpassingen. Beperk het event log niet tot één regel per productieorder.
- Tijdzone: Zet alle brontimestamps om naar één vastgelegde tijdzone. Behoud de brontimestamp of tijdzoneverschuiving als de bron die beschikbaar stelt.
- Vernieuwingsgegevens: Vul LastDataUpdate voor elke regel met de timestamp van de vernieuwing of extractie. Als de volledige dataset in één keer wordt opgehaald, volstaat één timestamp voor de hele vernieuwing.
- Prestaties: Pas datum-, bedrijfs-, fabrieks- en orderfilters toe bij de bron. Selecteer alleen benodigde kolommen, vermijd onnodige samenvoegingen, sla herbruikbare bronquery’s op en overweeg incrementeel vernieuwen voor grote datasets.
- Vereisten: Power BI Desktop of een goedgekeurde Power Query-omgeving, netwerktoegang tot de Dynamics 365-omgeving, geldige leesrechten voor alle geselecteerde entiteiten en eventuele benodigde toegang tot Dynamics 365 Manufacturing, magazijn-, kwaliteits-, controle- of wijzigingsregistratiegegevens.
- Data afhankelijk van configuratie: Als een vereiste gebeurtenisbron niet is ingeschakeld, gebruik je [Configure based on your system] en documenteer je welke bron ontbreekt. Vervang historische gebeurtenissen niet door een momentopname van de huidige status.
a Voorbeeldquery sql
let
StartDate = #datetime(2026, 1, 1, 0, 0, 0),
EndDate = #datetime(2026, 6, 30, 23, 59, 59),
CompanyFilter = "[Your company or legal entity filter]",
SourceSystemValue = "Microsoft Dynamics 365 Manufacturing",
RefreshTime = DateTimeZone.RemoveZone(DateTimeZone.UtcNow()),
ProductionOrderHeader = [Your production order header query],
ProductionOrderOperation = [Your production order operation or route query],
MaterialPicking = [Your material picking or picking list query],
ProductionPosting = [Your production posting query],
QualityOrder = [Your quality order query],
ProductionOrderHistory = [Your approved production order audit or change tracking query],
Header = Table.SelectRows(ProductionOrderHeader, each [EventTime] >= StartDate and [EventTime] <= EndDate and [Company] = CompanyFilter),
Operations = Table.SelectRows(ProductionOrderOperation, each [EventTime] >= StartDate and [EventTime] <= EndDate and [Company] = CompanyFilter),
Picking = Table.SelectRows(MaterialPicking, each [EventTime] >= StartDate and [EventTime] <= EndDate and [Company] = CompanyFilter),
Posting = Table.SelectRows(ProductionPosting, each [EventTime] >= StartDate and [EventTime] <= EndDate and [Company] = CompanyFilter),
Quality = Table.SelectRows(QualityOrder, each [EventTime] >= StartDate and [EventTime] <= EndDate and [Company] = CompanyFilter),
History = Table.SelectRows(ProductionOrderHistory, each [EventTime] >= StartDate and [EventTime] <= EndDate and [Company] = CompanyFilter),
Created = Table.SelectRows(Header, each [EventType] = "Created" or [EventType] = "Firmed"),
Estimated = Table.SelectRows(Header, each [EventType] = "Estimated"),
Scheduled = Table.SelectRows(Operations, each [EventType] = "Scheduled"),
Picked = Table.SelectRows(Picking, each [EventType] = "Picked" or [EventType] = "Posted"),
Released = Table.SelectRows(Header, each [EventType] = "Released"),
Adjusted = Table.SelectRows(History, each [ChangedField] = "Quantity" or [ChangedField] = "PlannedStartDate" or [ChangedField] = "PlannedEndDate" or [ChangedField] = "Status" or [ChangedField] = "ProductionPlant" or [ChangedField] = "ProductNumber" or [ChangedField] = "ProductionPriority"),
Started = Table.SelectRows(Posting, each [EventType] = "Started"),
OperationCompleted = Table.SelectRows(Operations, each [EventType] = "Completed"),
ReportedFinished = Table.SelectRows(Posting, each [EventType] = "Reported as finished" or [EventType] = "Finished"),
QualityGenerated = Table.SelectRows(Quality, each [EventType] = "Generated" or [EventType] = "Created"),
QualityPassed = Table.SelectRows(Quality, each [EventType] = "Passed" or [EventType] = "Validated"),
Ended = Table.SelectRows(Header, each [EventType] = "Ended"),
Cancelled = Table.SelectRows(Header, each [EventType] = "Cancelled"),
ToEvent = (InputTable as table, Activity as text) as table =>
let
Selected = Table.SelectColumns(InputTable, {"ProductionOrderNumber", "EventTime", "ProductionOrderStatus", "PlannedStartDate", "PlannedEndDate", "UserId", "ProductionPlant", "ProductNumber", "ProductionType", "ActualQuantity", "ProductionPriority"}, MissingField.UseNull),
Named = Table.AddColumn(Selected, "ActivityName", each Activity, type text),
Source = Table.AddColumn(Named, "SourceSystem", each SourceSystemValue, type text),
Updated = Table.AddColumn(Source, "LastDataUpdate", each RefreshTime, type datetime),
Ordered = Table.ReorderColumns(Updated, {"ProductionOrderNumber", "ActivityName", "EventTime", "SourceSystem", "LastDataUpdate", "ProductionOrderStatus", "PlannedStartDate", "PlannedEndDate", "UserId", "ProductionPlant", "ProductNumber", "ProductionType", "ActualQuantity", "ProductionPriority"}),
Valid = Table.SelectRows(Ordered, each [ProductionOrderNumber] <> null and [ProductionOrderNumber] <> "" and [EventTime] <> null)
in
Valid,
EventsCreated = ToEvent(Created, "Production Order Created"),
EventsEstimated = ToEvent(Estimated, "Production Order Estimated"),
EventsScheduled = ToEvent(Scheduled, "Production Order Scheduled"),
EventsPicked = ToEvent(Picked, "Materials Picked For Production"),
EventsReleased = ToEvent(Released, "Production Order Released"),
EventsAdjusted = ToEvent(Adjusted, "Production Order Adjusted"),
EventsStarted = ToEvent(Started, "Production Started"),
EventsOperationCompleted = ToEvent(OperationCompleted, "Operation Completed"),
EventsReportedFinished = ToEvent(ReportedFinished, "Production Reported As Finished"),
EventsQualityGenerated = ToEvent(QualityGenerated, "Quality Order Generated"),
EventsQualityPassed = ToEvent(QualityPassed, "Quality Inspection Passed"),
EventsEnded = ToEvent(Ended, "Production Order Ended"),
EventsCancelled = ToEvent(Cancelled, "Production Order Cancelled"),
EventLog = Table.Combine({EventsCreated, EventsEstimated, EventsScheduled, EventsPicked, EventsReleased, EventsAdjusted, EventsStarted, EventsOperationCompleted, EventsReportedFinished, EventsQualityGenerated, EventsQualityPassed, EventsEnded, EventsCancelled}),
Typed = Table.TransformColumnTypes(EventLog, {{"ProductionOrderNumber", type text}, {"ActivityName", type text}, {"EventTime", type datetime}, {"SourceSystem", type text}, {"LastDataUpdate", type datetime}, {"ProductionOrderStatus", type text}, {"PlannedStartDate", type datetime}, {"PlannedEndDate", type datetime}, {"UserId", type text}, {"ProductionPlant", type text}, {"ProductNumber", type text}, {"ProductionType", type text}, {"ActualQuantity", type number}, {"ProductionPriority", type text}}),
Sorted = Table.Sort(Typed, {{"ProductionOrderNumber", Order.Ascending}, {"EventTime", Order.Ascending}, {"ActivityName", Order.Ascending}})
in
Sorted Klaar om aan de slag te gaan?
Met deze complete template kun je beginnen met het extraheren en analyseren van data over je productieplanning. Begin vandaag nog met het optimaliseren van je bedrijfsvoering.
Haal meer uit je productieplanning: verbeter die vandaag nog
Spoor bottlenecks op en verkort de productiedoorlooptijd met 30% of meer.
Geen creditcard nodig. Binnen enkele minuten ingesteld.