BPMN diagram examples

Here are some examples of BPMN diagrams you can create.

Expense Submission and Approval Flow

title Expense Submission and Approval Flow

User [color: lightblue] {
  Login [icon: log-in]
  Access confirmed [type: event, icon: check-circle]
  Start new expense report [icon: file-plus]
  Upload receipts [icon: upload]
  Reimbursed [type: event, icon: dollar-sign]
  User rejected [type: event, label: "Rejected", icon: x-circle]
}

System [color: orange] {
  OCR extract date & amount [icon: calendar]
  Check amount [type: gateway, icon: filter]
  "Auto-approve?" [type: gateway, icon: check]
  "Auto-approved" [type: event, icon: thumbs-up]
  Send to manager [icon: send]
  Process reimbursement [icon: credit-card]
}

Manager [color: green] {
  Review expense [icon: eye]
  Approve? [type: gateway, icon: check]
  Approved [type: event, icon: thumbs-up]
  Rejected [type: event, icon: x-circle]
}

// Connections within User pool
Login > Access confirmed
Access confirmed > Start new expense report
Start new expense report > Upload receipts

// User to System (dashed message flow)
Upload receipts -- OCR extract date & amount : Receipts

// System pool
OCR extract date & amount > Check amount
Check amount > "Auto-approve?" : Amount < $500
Check amount --> Rejected : Amount > $500

// Auto-approve gateway
"Auto-approve?" > "Auto-approved" : Amount < $50
"Auto-approve?" > Send to manager : $51–$500

// Auto-approved to reimbursement
"Auto-approved" > Process reimbursement

// Send to manager to Manager pool (dashed message flow)
Send to manager -- Review expense : Expense for approval

// Manager pool
Review expense > Approve?
Approve? > Approved : Yes
Approve? > Rejected : No

// Approved to System (dashed message flow)
Approved --> Process reimbursement : Approval

// Process reimbursement to User pool (dashed message flow)
Process reimbursement --> Reimbursed : Reimbursement
Upload receipts > Reimbursed

// Rejected to User pool (dashed message flow)
Rejected --> Reimbursed : Notify user
Upload receipts > User rejected


Product Returns Process

title Product Returns Process

Customer [color: teal] {
  Return requested [type: event, icon: mail]
  Ship or drop off item [icon: truck]
  Return complete [type: event, icon: check-circle]
  "Notified: Return not accepted" [type: event, icon: alert-triangle]
}

Company [color: blue] {
  Customer Service {
    Check return eligibility [icon: check-square]
    Eligible? [type: gateway, icon: x]
    Send return instructions [icon: send]
    "Notify: Return not accepted" [icon: x-circle]
  }
  Warehouse {
    Receive & inspect item [icon: package]
    Item OK? [type: gateway, icon: x]
    Offer partial refund or return item [icon: slash]
    Approve return & update stock [icon: database]
  }
  Finance {
    "Issue refund/store credit/replacement" [icon: credit-card]
    "Notify customer: Return complete" [icon: mail]
  }
}

// Connections

Return requested > Check return eligibility
Check return eligibility > Eligible?
Eligible? > Send return instructions : Yes
Eligible? > "Notify: Return not accepted" : No
"Notify: Return not accepted" --> "Notified: Return not accepted"
Return requested > Ship or drop off item
Send return instructions > Ship or drop off item
Ship or drop off item --> Receive & inspect item
Receive & inspect item > Item OK?
Item OK? > Approve return & update stock : Yes
Item OK? > Offer partial refund or return item : No
Offer partial refund or return item --> "Issue refund/store credit/replacement"
Approve return & update stock --> "Issue refund/store credit/replacement"
"Issue refund/store credit/replacement" > "Notify customer: Return complete"
"Notify customer: Return complete" --> Return complete
Ship or drop off item > Return complete
Ship or drop off item > "Notified: Return not accepted"