ContentFlow BV is een marketingbureau met 12 medewerkers. Elke week verwerken ze tientallen offertes, facturen en contracten. Het proces verloopt via e-mail, losse bestanden op de desktop en veel kopieer-plakwerk. Een offerte goedkeuren kost soms drie dagen omdat de directeur het e-mailbericht mist.
In deze handleiding bouwen we stap voor stap het volledige documentworkflow-systeem van ContentFlow BV. Na afloop worden offertes automatisch ter goedkeuring gestuurd, facturen verwerkt zonder menselijke tussenkomst en krijg je 30 dagen voor elke contractverlenging een alert. Totale tijdsbesparing: geschat 8 uur per week.
Wat heb je nodig?
vereisten:
licenties:
- Microsoft 365 Business Standard of hoger (inclusief Power Automate)
- Of Power Automate Premium (voor premium connectors)
tools:
- SharePoint Online (documentopslag)
- Microsoft Teams (notificaties en goedkeuringen)
- OneDrive for Business (archivering)
- Outlook (e-mail triggers)
toegang:
- Global Admin of Power Platform Admin rechten
- SharePoint site met schrijfrechten
- Dataverse database (voor DLP-configuratie)
kosten_indicatie:
Microsoft_365_Business_Standard: "12,50 euro per gebruiker per maand"
Power_Automate_Premium: "14,40 euro per gebruiker per maand"
ROI_ContentFlow_BV: "8 uur besparing per week = ca. 400 euro per maand"
Stap 1: Power Automate openen en Copilot activeren
Ga naar make.powerautomate.com en log in met je Microsoft 365-account. Op de startpagina zie je bovenaan het Copilot-invoerveld met de tekst 'Create your automation with Copilot'. Als je dit niet ziet, controleer dan of Copilot is ingeschakeld in je tenant.
Om Copilot in te schakelen: ga naar het Power Platform admin center (admin.powerplatform.microsoft.com), kies je omgeving, ga naar Settings en zet 'Copilot' op Aan. Dit vereist Global Admin rechten.
Stap 2: Je eerste flow beschrijven in natuurlijke taal
Klik op het Copilot-invoerveld en beschrijf in gewone taal wat de flow moet doen. Copilot genereert een conceptflow met de juiste connectors en stappen. Itereer door aanpassingen te typen totdat de flow klopt.
{
"goede_copilot_prompts": [
"Wanneer een nieuw bestand wordt geupload naar de SharePoint map 'Offertes-Inbox', stuur een goedkeuringsverzoek naar de directeur in Teams en verplaats het bestand naar 'Goedgekeurd' of 'Afgewezen'",
"Wanneer ik een e-mail ontvang in Outlook met bijlage en onderwerp 'Factuur', sla de bijlage op in SharePoint en stuur een melding naar de boekhouder in Teams",
"Stuur elke dag om 9:00 een lijst van contracten die binnen 30 dagen verlopen vanuit een SharePoint lijst naar mijn Teams-kanaal"
],
"tips": [
"Wees specifiek over triggers (wanneer), acties (wat) en condities (als)",
"Noem de exacte SharePoint-mapnamen en Teams-kanalen",
"Begin eenvoudig, voeg daarna stap voor stap complexiteit toe"
]
}
Stap 3: Offerte-goedkeuringsworkflow bouwen
Dit is de kern van het systeem van ContentFlow BV. Een offerte wordt geupload naar SharePoint, de directeur krijgt een goedkeuringsverzoek in Teams, en na goedkeuring of afwijzing wordt het bestand automatisch gearchiveerd. Dit is de volledige flow-configuratie:
{
"flow_naam": "Offerte-Goedkeuring-ContentFlow",
"trigger": {
"type": "SharePoint - When a file is created",
"site": "https://contentflowbv.sharepoint.com/sites/DocumentenHub",
"library": "Gedeelde documenten",
"folder": "Offertes-Inbox"
},
"stap_1": {
"actie": "Teams - Post an Adaptive Card and wait for a response",
"team": "Management",
"kanaal": "Goedkeuringen",
"card_title": "Nieuwe offerte ter goedkeuring",
"card_body": "Offerte: @{triggerOutputs()?['body/Name']}\nGrootte: @{triggerOutputs()?['body/Size']} bytes\nDatum: @{utcNow()}",
"opties": ["Goedkeuren", "Afwijzen"],
"timeout": "PT48H"
},
"stap_2_goedgekeurd": {
"conditie": "@equals(body('Teams_Goedkeuring')?['submitActionId'], 'Goedkeuren')",
"actie": "SharePoint - Move file",
"doel_map": "Offertes-Goedgekeurd/@{formatDateTime(utcNow(), 'yyyy-MM')}"
},
"stap_2_afgewezen": {
"actie": "SharePoint - Move file",
"doel_map": "Offertes-Afgewezen"
},
"stap_3": {
"actie": "Outlook - Send an email",
"aan": "@{triggerOutputs()?['body/Author/Email']}",
"onderwerp": "Offerte @{body('Teams_Goedkeuring')?['submitActionId']}: @{triggerOutputs()?['body/Name']}",
"body": "Jouw offerte is @{body('Teams_Goedkeuring')?['submitActionId']}."
}
}
Stap 4: Factuurverwerking automatiseren
Inkomende facturen komen via e-mail binnen bij ContentFlow BV. De flow detecteert e-mails met 'Factuur' in het onderwerp, slaat de bijlage op in SharePoint en notificeert de boekhouder in Teams. Gebruik de Outlook-connector met een filter op onderwerp:
{
"flow_naam": "Factuurverwerking-Automatisch",
"trigger": {
"type": "Outlook - When a new email arrives",
"filter": "Subject eq 'Factuur' or startswith(Subject, 'Factuur') or startswith(Subject, 'Invoice')",
"has_attachment": true,
"folder": "Inbox"
},
"stap_1": {
"actie": "Apply to each (bijlages)",
"sub_actie": "SharePoint - Create file",
"site": "https://contentflowbv.sharepoint.com/sites/DocumentenHub",
"map": "Facturen-Inbox/@{formatDateTime(utcNow(), 'yyyy-MM')}",
"bestandsnaam": "@{formatDateTime(utcNow(), 'yyyyMMdd')}_@{item()?['Name']}",
"inhoud": "@{item()?['ContentBytes']}"
},
"stap_2": {
"actie": "Teams - Post message in a channel",
"team": "Finance",
"kanaal": "Facturen",
"bericht": "Nieuwe factuur ontvangen van @{triggerOutputs()?['body/From']}\nOmschrijving: @{triggerOutputs()?['body/Subject']}\nDatum: @{formatDateTime(utcNow(), 'dd-MM-yyyy')}\nOpgeslagen in SharePoint: Facturen-Inbox"
},
"stap_3": {
"actie": "Outlook - Move email",
"doel_map": "Verwerkte Facturen"
}
}
Stap 5: Documentversie-beheer in SharePoint
SharePoint heeft ingebouwd versiebeheer, maar je kunt Power Automate gebruiken om automatisch een gestructureerde naamgeving af te dwingen en een versielogboek bij te houden. Dit voorkomt bestanden zoals 'offerte-definitief-v3-ECHT-FINAAL.docx'.
{
"naming_convention": {
"formule": "@{variables('DocumentType')}_@{variables('Klantnaam')}_v@{variables('Versienummer')}_@{formatDateTime(utcNow(), 'yyyyMMdd')}",
"voorbeeld": "Offerte_AcmeBV_v3_20260403.docx"
},
"versie_log_actie": {
"actie": "SharePoint - Update item",
"lijst": "Versielogboek",
"velden": {
"DocumentNaam": "@{triggerOutputs()?['body/Name']}",
"Versie": "@{triggerOutputs()?['body/MajorVersion']}.@{triggerOutputs()?['body/MinorVersion']}",
"GewijzigdDoor": "@{triggerOutputs()?['body/Editor/Email']}",
"Datum": "@{utcNow()}",
"Opmerking": "Automatisch gelogd door Power Automate"
}
}
}
Stap 6: Onboarding workflow voor nieuwe medewerkers
Wanneer HR een nieuw medewerker aanmaakt in de SharePoint-lijst 'Medewerkers', start automatisch een reeks acties: welkomstmail, Teams-uitnodiging, IT-ticket voor hardware en trainingsplanning.
{
"flow_naam": "Onboarding-Nieuwe-Medewerker",
"trigger": {
"type": "SharePoint - When an item is created",
"lijst": "Medewerkers",
"filter": "Status eq 'Nieuw'"
},
"parallelle_acties": [
{
"stap": "Welkomstmail",
"actie": "Outlook - Send email",
"aan": "@{triggerOutputs()?['body/Email']}",
"onderwerp": "Welkom bij ContentFlow BV, @{triggerOutputs()?['body/Voornaam']}!",
"template": "welkomst_email_template"
},
{
"stap": "Teams uitnodiging",
"actie": "Teams - Add member to team",
"team": "ContentFlow BV - Algemeen"
},
{
"stap": "IT ticket",
"actie": "SharePoint - Create item",
"lijst": "IT-Taken",
"titel": "Hardware setup @{triggerOutputs()?['body/Voornaam']} @{triggerOutputs()?['body/Achternaam']}",
"deadline": "@{addDays(utcNow(), -2)}"
}
],
"stap_na_48u": {
"actie": "Outlook - Send email",
"onderwerp": "Training ingepland voor @{triggerOutputs()?['body/Voornaam']}"
}
}
Stap 7: Contractverlenging alerts
Contracten die stilzwijgend verlengd worden kunnen flink geld kosten. Deze Scheduled flow draait elke ochtend om 8:00 en controleert de SharePoint-lijst 'Contracten' op naderend verloopdatum.
{
"flow_naam": "Contractverlenging-Alerts",
"trigger": {
"type": "Recurrence",
"interval": 1,
"frequency": "Day",
"startTime": "2026-04-03T08:00:00Z",
"timeZone": "W. Europe Standard Time"
},
"stap_1": {
"actie": "SharePoint - Get items",
"lijst": "Contracten",
"filter": "Verloopdatum ge '@{addDays(utcNow(), 1)}' and Verloopdatum le '@{addDays(utcNow(), 30)}' and Status eq 'Actief'"
},
"stap_2": {
"actie": "Apply to each",
"conditie": "@or(equals(daysDiff, 30), equals(daysDiff, 14), equals(daysDiff, 7))",
"daysDiff_berekening": "@int(div(sub(ticks(item()?['Verloopdatum']), ticks(utcNow())), 864000000000))",
"melding": {
"actie": "Teams - Post message",
"bericht": "Contract alert: @{item()?['Title']} verloopt over @{variables('DaysDiff')} dagen (@{item()?['Verloopdatum']}). Leverancier: @{item()?['Leverancier']}. Actie vereist!"
}
}
}
Stap 8: DLP-beleid instellen voor beveiliging
Data Loss Prevention beleid voorkomt dat gevoelige bedrijfsdata via flows lekt naar niet-goedgekeurde diensten. Stel dit in via het Power Platform Admin Center voordat je de flows activeert.
dlp_beleid_contentflow_bv:
naam: "ContentFlow-Standaard-DLP"
omgeving: "Productie"
business_connectors: # Toegestaan voor bedrijfsdata
- SharePoint
- Teams
- Outlook
- OneDrive for Business
- Dataverse
- Azure Key Vault
non_business_connectors: # Geblokkeerd
- Twitter
- Gmail
- Dropbox
- Google Drive
- Slack (tenzij goedgekeurd)
blocked_connectors: # Volledig geblokkeerd
- Alle connectors niet in bovenstaande lijsten
instellingen:
http_action: blokkeren # Geen willekeurige HTTP-calls
custom_connectors: vereist_review
instellen_via:
- admin.powerplatform.microsoft.com
- Policies > Data policies > New policy
Stap 9: Testen en debuggen
Voordat je een flow in productie neemt, test je hem via de testfunctie in Power Automate. Ga naar de flow, klik op 'Test' rechtsboven en kies 'Manually'. Power Automate voert de flow uit en toont per stap de input en output. De Run History is te vinden onder 'My flows' naast de flow.
{
"debug_workflow": [
{
"stap": "Check trigger",
"actie": "Klik op de trigger in Run History, controleer of de input klopt"
},
{
"stap": "Gebruik Compose actie",
"actie": "Voeg tijdelijk een Compose toe met @{outputs('Stap_naam')} om waarden te inspecteren"
},
{
"stap": "Parallel branch testen",
"actie": "Gebruik Switch actie met Test en Productie branches"
},
{
"stap": "Error handling",
"actie": "Voeg Configure run after toe op elke stap: zet ook 'has failed' aan voor foutafhandeling"
}
],
"veelgemaakte_fouten": [
"Dynamic content verwijst naar verkeerde stap (gebruik altijd de stap-naam, niet de actienaam)",
"Tijdzones: gebruik altijd convertTimeZone() voor NL tijden",
"SharePoint filter OData syntax: gebruik eq, ne, gt, lt (geen ==)"
]
}
Stap 10: Rapportage en monitoring via Power Automate Analytics
Power Automate Analytics geeft inzicht in het gebruik, de prestaties en foutpercentages van al je flows. Bereikbaar via admin.powerplatform.microsoft.com onder Analytics. Voor ContentFlow BV zijn de meest relevante metrics:
monitoring_dashboard_contentflow:
kpi_per_flow:
- metric: Runs_per_week
target: '>= 20 voor offerte-flow'
- metric: Success_rate
target: '>= 95%'
- metric: Avg_duration
target: '< 2 minuten per run'
- metric: Failures
alert_threshold: '> 3 per dag'
alerts_instellen:
via: Power Automate zelf
flow: 'Monitor-Flow-Fouten'
trigger: 'Power Platform for Admins - When a flow run fails'
actie: 'Teams bericht naar IT-kanaal'
maandelijkse_review:
- Flows met success rate < 90% optimaliseren
- Ongebruikte flows deactiveren (kostenbesparing)
- Licentiegebruik controleren
Troubleshooting: 5 veelvoorkomende problemen
{
"problemen": [
{
"probleem": "Flow triggert niet bij SharePoint upload",
"oorzaak": "SharePoint trigger heeft vertraging van 1-2 minuten. Ook: DLP-beleid blokkeert connector.",
"oplossing": "Wacht 2-3 minuten, controleer DLP-beleid in admin center, herstart de flow"
},
{
"probleem": "Teams goedkeuring time-out",
"oorzaak": "Default timeout is 30 dagen, maar de Adaptive Card verdwijnt na Teams-update",
"oplossing": "Stel timeout in op PT48H (48 uur), voeg reminder-actie toe na 24 uur"
},
{
"probleem": "SharePoint filter geeft geen resultaten",
"oorzaak": "OData syntax fout of datumformaat verkeerd",
"oplossing": "Gebruik ISO 8601 format voor datums: 2026-04-03T00:00:00Z. Gebruik Postman om filter te testen via Graph API"
},
{
"probleem": "E-mail bijlage niet opgeslagen",
"oorzaak": "Apply to each loop mist, of bijlage is inline afbeelding geen attachment",
"oplossing": "Controleer of HasAttachments true is via conditie, gebruik Attachments array expliciet"
},
{
"probleem": "Flow run-limieten bereikt",
"oorzaak": "Microsoft 365 Business Standard limiet: 6.000 runs per maand",
"oplossing": "Upgrade naar Power Automate Premium (250.000 runs/maand) of combineer flows"
}
]
}
Uitbreidingen: wat kun je hierna bouwen?
Nu je de basis hebt, zijn er interessante uitbreidingen die ContentFlow BV nog meer tijd besparen:
uitbreidingen:
ai_builder_integratie:
beschrijving: "Automatisch facturen uitlezen met AI Builder Form Processing"
tijdsbesparing: "15 minuten per factuur"
licentie: "AI Builder credits (inbegrepen bij Power Automate Premium)"
power_bi_koppeling:
beschrijving: "Automatisch rapportages bijwerken op basis van flow-data"
resultaat: "Real-time dashboard met offerte-conversieratio en doorlooptijden"
copilot_studio_chatbot:
beschrijving: "Teams chatbot die medewerkers laat vragen naar documenten"
voorbeeld: "Typ: 'Laatste offerte Acme BV' en de bot stuurt het bestand"
e_handtekening:
beschrijving: "Koppeling met Adobe Sign of DocuSign via Power Automate connector"
flow: "Goedgekeurd document -> Stuur ter ondertekening -> Archiveer ondertekend exemplaar"
erp_koppeling:
beschrijving: "Goedgekeurde facturen automatisch boeken in Exact Online of Twinfield"
connector: "Exact Online (premium connector)"
Resultaat voor ContentFlow BV
{
"tijdsbesparing_per_week": {
"offerte_goedkeuring": "3 uur (geen follow-up e-mails meer)",
"factuurverwerking": "2 uur (handmatig doorsturen verdwijnt)",
"contract_alerts": "1 uur (geen handmatige kalendercontrole)",
"onboarding": "2 uur per nieuwe medewerker",
"totaal": "8 uur per week"
},
"kostenbesparing_maand": {
"arbeidskosten_bespaard": "400 euro (8u x 50 euro/u)",
"power_automate_premium": "172 euro (12 gebruikers)",
"netto_besparing": "228 euro per maand",
"roi_na_1_jaar": "2.736 euro"
},
"kwaliteitsverbetering": [
"Nul gemiste contractverlengingen",
"Goedkeuringstijd offertes van 3 dagen naar 4 uur",
"Alle facturen correct gearchiveerd",
"Onboarding consistent voor elke nieuwe medewerker"
]
}
Conclusie
Power Automate met Copilot maakt documentworkflows toegankelijk voor elk MKB-bedrijf met Microsoft 365. Copilot verlaagt de drempel enorm: je beschrijft in gewone taal wat je wilt en de flow wordt voor je opgebouwd. De tien stappen in deze handleiding geven je een volledig werkend systeem voor offertes, facturen, contracten en onboarding.
Begin met de offerte-goedkeuringsflow, dat levert direct merkbaar resultaat. Voeg daarna stap voor stap de andere flows toe. Meer leren over automatisering? Bekijk onze handleiding over n8n klantenservice-agent bouwen met Claude, of lees ons vergelijkingsartikel Zapier vs n8n vs Make.
Bronnen en verdere documentatie
Microsoft Learn: docs.microsoft.com/power-automate | Power Platform Admin Center: admin.powerplatform.microsoft.com | Power Automate Copilot docs: learn.microsoft.com/power-automate/get-started-with-copilot | AI Builder: learn.microsoft.com/ai-builder