Home / Nieuws / Business Process Flow Automatisering in Microsoft Dynamics 365
11 augustus 2020
Door: Neil Kersten

Business Process Flow Automatisering in Microsoft Dynamics 365

Featured image for a blog about automating Business Process Flow in D365

Standaard is niet altijd makkelijk

Het modelleren van een zeer complexe bedrijfsprocesstroom in Dynamics 365 met behulp van de standaardfunctionaliteit kan een behoorlijke uitdaging zijn.

De gebruiker moet bijvoorbeeld eerst het record zoeken en vinden in het systeem dat ze willen verwerken. Alleen deze stap kan foutgevoelig zijn als je een onjuist record selecteert.

Vervolgens moet de gebruiker mogelijk een nieuw record aanmaken, bijvoorbeeld een “Order”, en deze order indienen bij het Enterprise Resource Planning (ERP) -systeem. Er kan een vertraging zijn tussen het moment waarop de “Bestelling is geplaatst” en wanneer deze wordt verwerkt door het ERP-systeem, waardoor de gebruiker niet direct door kan gaan naar de volgende stap in het proces.

Al deze handmatige verwerking van records in Dynamics 365 kan erg tijdrovend zijn voor de gebruiker en leiden tot knelpunten in het bedrijfsproces. Wij hebben daarom gewerkt aan een automatiseringsoplossing die de doorvoer van het systeem verhoogt.

Deze automatisering moest het volgende doen/kunnen:

  • Geïnitieerd worden via een Application Programming Interface (API)
  • Automatiseren van bestaande handmatige processen
  • Minder gebruikersfouten maken door alle invoer te valideren
  • Autonoom draaien totdat het proces is voltooid
  • Dit kan tot 10 minuten duren, soms wachten op de verwerking van records in het ERP-systeem

In dit blog zal ik de business vereisten uitleggen en een overzicht geven van de oplossing.

Graag wil ik nog even Michel Gueli noemen, die een belangrijke rol heeft gespeeld bij de technische ontwikkeling van de oplossing. Samen hebben we hard gewerkt om van iets wat maar een idee was, tot een oplossing te maken.

 

Achtergrond en proces

Onze Cloud4Commodities-oplossing, beschikbaar in de AppSource, kan worden gebruikt om het vastleggen van handelsdeals tussen twee partijen te vergemakkelijken. Dit is een functie die wordt ingevuld door hun handelaars in de frontoffice.

Het logistieke afwikkelingsproces van deze deals is een functie die wordt vervuld door operators in het middel Office.

Er zijn twee hoofdprocessen die de middel Office-gebruikers uitvoeren bij het sluiten van een deal:

  • Ontvangst van inventaris
  • Afstemming van voorraad op verkoopleveringen

Voor beide processen is Dynamics 365 geïntegreerd met het ERP-systeem:

  • Inkooporders worden gegenereerd en ontvangen voorraad wordt in het systeem geboekt
  • Verkooporders worden aan klanten gefactureerd en voorraad wordt geboekt

Zoals je je kunt voorstellen, is het nauwkeurig volgen van alle ontvangsten en het afstemmen van deze op leveringen een tijdrovende klus voor het middel Office.

Om een oplossing te vinden die deze processen voor het middel office helpen te automatiseren, kwamen we met twee ideeën:

  1. Aangezien de voorraadontvangst eerst wordt geregistreerd op een ander extern systeem, het “voorraadregistratiesysteem”, ontwikkelden we een API die kan worden gebruikt om de geautomatiseerde ontvangst van voorraad makkelijker te maken.
  2. Deze API was ook nodig om het matchen van voorraad aan verkoopleveringen te ondersteunen. Dit zou ervoor zorgen dat er de mogelijkheid is om voorraad te koppelen aan verkoopleveringen buiten het systeem en een verzoek naar de API te sturen om het daadwerkelijke proces uit te voeren.

 

Onze oplossing

Hierboven ziet je een diagram op hoog niveau van de uiteindelijk ontwikkelde oplossing. Hieronder zal ik elk onderdeel van de oplossing beschrijven.

 

1 API voor Process Engine

Zoals gezegd was een vereiste van de oplossing om de functionaliteit “Business Process Automation” beschikbaar te stellen via een API, zodat een proces van buiten Dynamics 365 kon worden geïnitieerd.

Aan deze eis is voldaan door de ontwikkeling van een RESTful web service, die in Microsoft Azure draait als een “App Service”.

Enkele opmerkelijke methoden die door deze service worden ondersteund, zijn onder meer:

  • Een proces uitvoeren – Deze bewerking start een nieuw proces
  • Het ophalen van de processtatus – Deze bewerking controleert de status van een proces

 

2 Valideer de proces inputs

Elk proces dat aan het systeem wordt voorgelegd, wordt eerst gevalideerd. Dit betekent dat de invoer wordt geëvalueerd op juistheid, waardoor wordt voorkomen dat slechte verzoeken worden geaccepteerd en verwerkt.

 

3 Maak een procesrecord en sla de invoerproceswaarden op

Elk proces in het systeem begint met het maken van een nieuw Proces entiteitsrecord in Dynamics 365.

De bovenstaande schermafbeelding bevat details zoals:

  • Het type proces (d.w.z. ontvangstbewijs of overeenkomst)
  • De status van het proces (d.w.z. actief of voltooid)
  • Proceswaarden die als invoer zijn doorgegeven of tijdens het proces zijn gemaakt. De deal-ID waartegen het aandeel wordt ontvangen
  • Een logboek van alle voltooide processtappen

 

4 Geplande taak om de procesengine uit te voeren

We maken gebruik van een product van onze “Producten” business, genaamd de Dynamic Scheduler, die wordt gebruikt om onze “Process Engine” uit te voeren volgens een configureerbaar schema / tijdsbestek.

De “Process Engine” pikt actieve procesrecords op en verwerkt deze.

 

5 Valideer de processtap

Elke processtap wordt eerst gevalideerd. Als de stap de validatie doorstaat, wordt deze uitgevoerd.

Bijvoorbeeld als een inkoopordernummer nog niet is teruggestuurd vanuit het ERP-systeem, kan de volgende stap die verantwoordelijk is voor het toevoegen van de voorraad aan de inventaris niet worden uitgevoerd.

 

6 Voer de processtap uit en sla de gegenereerde proceswaarden op

In eerste instantie zal de “Process Engine” de eerste stap van een actief proces uitvoeren.

Bijvoorbeeld: maak een inkooporder voor een koopovereenkomst.

Wanneer een processtapactie wordt uitgevoerd, kan deze actie leiden tot het aanmaken van een record in het systeem. Het systeem zal dan de details van dit gegenereerde record opslaan in een “Proceswaarden” -entiteit die verband houdt met het Proces.

Bijvoorbeeld: we slaan de PO-id van de hierboven gecreëerde inkooporder op.

 

7 Ga naar de volgende stap in het proces

De “Process Engine” is ook verantwoordelijk voor het doorgaan naar de volgende gedefinieerde stap in het proces of het markeren van het proces als “Finished” zodra alle stappen zijn uitgevoerd.

 

Wat hebben we opgelost?

Door vast te houden aan onze aanpak en de ontwerpprincipes die we hebben aangenomen, zijn we erin geslaagd de volgende uitdagingen op te lossen:

  • We waren in staat om een Process Engine te maken die zonder toezicht kan draaien gedurende langlopende processen (zelfs meer dan 10 minuten)
  • Dankzij het ontwerp van deze procesengine konden we al een derde proces aan de oplossing toevoegen
  • De oplossing valideert alle invoer en processtappen met behoud van de gegevensintegriteit van het systeem
  • De Process-engine kan worden geactiveerd door onze API
  • Vanwege het op componenten gebaseerde ontwerp van de oplossing hebben we ook een functie kunnen toevoegen om een proces vanuit Dynamics 365 te starten

Het resultaat is een uitbreidbare best practices-oplossing die je op de lange termijn geld zal besparen als het gaat om toekomstige ontwikkeling van het systeem.