# massimobonanni/azuredurablefunctionssuccinctly architecture

> Architecture diagram of the GitHub repository massimobonanni/azuredurablefunctionssuccinctly, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/massimobonanni/azuredurablefunctionssuccinctly
- Repository: https://github.com/massimobonanni/azuredurablefunctionssuccinctly

## Overview

This repository is a set of Azure Durable Functions examples, rather than one unified application. Its workflows accept requests or telemetry, coordinate durable orchestration/entity state, and produce records, notifications, invoices, or monitoring results. The graph preserves the distinct device, fan-out, order, human-approval, and weather-monitoring examples. Shown edges come from excerpts or the source index; dashed edges mark relationships whose implementation was not sampled.

Main entry points: [`DurableFunctions/Entities/TemperatureDevice/TemperatureDeviceEntity.cs`](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/TemperatureDevice/TemperatureDeviceEntity.cs) (Temperature entity), [`DurableFunctions/FunctionChaining/FunctionChainingFunctions.cs`](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/FunctionChaining/FunctionChainingFunctions.cs) (Order functions), [`DurableFunctions/HumanInteraction/HumanInteractionFunctions.cs`](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/HumanInteraction/HumanInteractionFunctions.cs) (Vacation functions), [`DurableFunctions/Entities/DevicesManagement.cs`](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/DevicesManagement.cs) (Device management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_device["Device entities"]
  node_device_management["Device management"]
  node_device_entity["Temperature entity"]
  node_device_telemetry["Device telemetry<br/>[DeviceTelemetry.cs]"]
  node_device_data["Device data<br/>[DeviceData.cs]"]
  node_device_notifications["Notification entity"]
  node_notification_signal["Notification signal"]
  node_temperature_alert["Temperature alerts"]
  node_twilio_activity["Twilio activities"]
end

subgraph group_orders["Order processing"]
  node_orders_api["Order functions"]
  node_order["Order model<br/>[Order.cs]"]
  node_order_row["Order record<br/>[OrderRow.cs]"]
  node_invoice["Invoice creation<br/>[Invoice.cs]"]
  node_email_helper["Email composition<br/>[SendGridHelper.cs]"]
  node_blob_store[("Invoice blob")]
  node_sendgrid["SendGrid"]
end

subgraph group_approval["Vacation approval"]
  node_human_functions["Vacation functions"]
  node_vacation_request["Vacation request<br/>[VacationRequest.cs]"]
  node_vacation_response["Approval response"]
  node_vacation_table[("Vacation records")]
end

subgraph group_monitoring["Weather monitoring"]
  node_monitor_functions["Monitoring functions"]
  node_weather_service["Weather service"]
  node_weather_api["OpenWeatherMap"]
end

subgraph group_orchestration["Durable patterns"]
  node_counter["Counter entity<br/>[Counter.cs]"]
  node_fanout["Backup fan-out"]
end

node_caller(("Function caller"))

node_caller -.->|"submits telemetry"| node_device_management
node_device_management -.->|"dispatches entity"| node_device_entity
node_device_management -.->|"uses entity"| node_device_notifications
node_device_entity -->|"accepts telemetry"| node_device_telemetry
node_device_entity -->|"stores readings"| node_device_data
node_device_entity -->|"signals alert"| node_notification_signal
node_notification_signal -->|"signals entity"| node_device_notifications
node_device_entity -->|"starts orchestration"| node_temperature_alert
node_device_entity -.->|"may notify"| node_twilio_activity
node_caller -->|"submits order"| node_orders_api
node_orders_api -->|"deserializes input"| node_order
node_orders_api -->|"saves order"| node_order_row
node_orders_api -->|"creates invoice"| node_invoice
node_orders_api -->|"writes invoice"| node_blob_store
node_orders_api -->|"builds email"| node_email_helper
node_email_helper -.->|"composes message"| node_sendgrid
node_caller -->|"requests vacation"| node_human_functions
node_human_functions -->|"deserializes input"| node_vacation_request
node_human_functions -->|"orchestrates decision"| node_vacation_response
node_human_functions -->|"saves approved request"| node_vacation_table
node_human_functions -->|"composes notifications"| node_email_helper
node_human_functions -.->|"sends email"| node_sendgrid
node_caller -.->|"starts monitoring"| node_monitor_functions
node_monitor_functions -.->|"requests conditions"| node_weather_service
node_weather_service -->|"fetches weather"| node_weather_api
node_caller -.->|"invokes entity"| node_counter
node_caller -.->|"starts backup"| node_fanout

click node_device_management "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/DevicesManagement.cs"
click node_device_entity "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/TemperatureDevice/TemperatureDeviceEntity.cs"
click node_device_telemetry "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/Models/DeviceTelemetry.cs"
click node_device_data "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/Models/DeviceData.cs"
click node_device_notifications "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/DeviceNotificationsEntity.cs"
click node_notification_signal "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/Extensions/DurableEntityContextExtensions.cs"
click node_temperature_alert "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/Alerts/TemperatureAlerts.cs"
click node_orders_api "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/FunctionChaining/FunctionChainingFunctions.cs"
click node_order "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/FunctionChaining/Order.cs"
click node_order_row "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/FunctionChaining/OrderRow.cs"
click node_invoice "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/FunctionChaining/Invoice.cs"
click node_email_helper "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Helpers/SendGridHelper.cs"
click node_human_functions "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/HumanInteraction/HumanInteractionFunctions.cs"
click node_vacation_request "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/HumanInteraction/VacationRequest.cs"
click node_vacation_response "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/HumanInteraction/VacationResponse.cs"
click node_monitor_functions "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Monitoring/MonitoringFunctions.cs"
click node_weather_service "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Monitoring/OpenWeatherMapService.cs"
click node_counter "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/Counter.cs"
click node_fanout "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/FanOut-FanIn/FanOutFanInFunctions.cs"
click node_twilio_activity "https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/Alerts/TwilioActivities.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_device_management,node_device_entity,node_device_telemetry,node_device_data,node_device_notifications,node_notification_signal,node_temperature_alert,node_twilio_activity toneBlue
class node_orders_api,node_order,node_order_row,node_invoice,node_email_helper,node_blob_store,node_sendgrid toneAmber
class node_human_functions,node_vacation_request,node_vacation_response,node_vacation_table toneMint
class node_monitor_functions,node_weather_service,node_weather_api toneRose
class node_counter,node_fanout,node_caller toneIndigo
```

## Components

### Device entities

- [Device management](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/DevicesManagement.cs): `DurableFunctions/Entities/DevicesManagement.cs`
- [Temperature entity](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/TemperatureDevice/TemperatureDeviceEntity.cs): `DurableFunctions/Entities/TemperatureDevice/TemperatureDeviceEntity.cs`
- [Device telemetry](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/Models/DeviceTelemetry.cs): `DurableFunctions/Entities/Models/DeviceTelemetry.cs`
- [Device data](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/Models/DeviceData.cs): `DurableFunctions/Entities/Models/DeviceData.cs`
- [Notification entity](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/DeviceNotificationsEntity.cs): `DurableFunctions/Entities/DeviceNotificationsEntity.cs`
- [Notification signal](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/Extensions/DurableEntityContextExtensions.cs): `DurableFunctions/Entities/Extensions/DurableEntityContextExtensions.cs`
- [Temperature alerts](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/Alerts/TemperatureAlerts.cs): `DurableFunctions/Entities/Alerts/TemperatureAlerts.cs`
- [Twilio activities](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/Alerts/TwilioActivities.cs): `DurableFunctions/Entities/Alerts/TwilioActivities.cs`

### Order processing

- [Order functions](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/FunctionChaining/FunctionChainingFunctions.cs): `DurableFunctions/FunctionChaining/FunctionChainingFunctions.cs`
- [Order model](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/FunctionChaining/Order.cs): `DurableFunctions/FunctionChaining/Order.cs`
- [Order record](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/FunctionChaining/OrderRow.cs): `DurableFunctions/FunctionChaining/OrderRow.cs`
- [Invoice creation](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/FunctionChaining/Invoice.cs): `DurableFunctions/FunctionChaining/Invoice.cs`
- [Email composition](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Helpers/SendGridHelper.cs): `DurableFunctions/Helpers/SendGridHelper.cs`
- **Invoice blob**
- **SendGrid**

### Vacation approval

- [Vacation functions](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/HumanInteraction/HumanInteractionFunctions.cs): `DurableFunctions/HumanInteraction/HumanInteractionFunctions.cs`
- [Vacation request](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/HumanInteraction/VacationRequest.cs): `DurableFunctions/HumanInteraction/VacationRequest.cs`
- [Approval response](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/HumanInteraction/VacationResponse.cs): `DurableFunctions/HumanInteraction/VacationResponse.cs`
- **Vacation records**

### Weather monitoring

- [Monitoring functions](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Monitoring/MonitoringFunctions.cs): `DurableFunctions/Monitoring/MonitoringFunctions.cs`
- [Weather service](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Monitoring/OpenWeatherMapService.cs): `DurableFunctions/Monitoring/OpenWeatherMapService.cs`
- **OpenWeatherMap**

### Durable patterns

- [Counter entity](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/Entities/Counter.cs): `DurableFunctions/Entities/Counter.cs`
- [Backup fan-out](https://github.com/massimobonanni/azuredurablefunctionssuccinctly/blob/main/DurableFunctions/FanOut-FanIn/FanOutFanInFunctions.cs): `DurableFunctions/FanOut-FanIn/FanOutFanInFunctions.cs`

### Other components

- **Function caller**

## Connections

- Function caller → Device management: submits telemetry
- Device management → Temperature entity: dispatches entity
- Device management → Notification entity: uses entity (evidence: `DurableFunctions/Entities/DevicesManagement.cs`)
- Temperature entity → Device telemetry: accepts telemetry (evidence: `DurableFunctions/Entities/TemperatureDevice/TemperatureDeviceEntity.cs`)
- Temperature entity → Device data: stores readings (evidence: `DurableFunctions/Entities/TemperatureDevice/TemperatureDeviceEntity.cs`)
- Temperature entity → Notification signal: signals alert (evidence: `DurableFunctions/Entities/TemperatureDevice/TemperatureDeviceEntity.cs`)
- Notification signal → Notification entity: signals entity (evidence: `DurableFunctions/Entities/Extensions/DurableEntityContextExtensions.cs`)
- Temperature entity → Temperature alerts: starts orchestration (evidence: `DurableFunctions/Entities/TemperatureDevice/TemperatureDeviceEntity.cs`)
- Temperature entity → Twilio activities: may notify
- Function caller → Order functions: submits order (evidence: `DurableFunctions/FunctionChaining/FunctionChainingFunctions.cs`)
- Order functions → Order model: deserializes input (evidence: `DurableFunctions/FunctionChaining/FunctionChainingFunctions.cs`)
- Order functions → Order record: saves order (evidence: `DurableFunctions/FunctionChaining/FunctionChainingFunctions.cs`)
- Order functions → Invoice creation: creates invoice (evidence: `DurableFunctions/FunctionChaining/FunctionChainingFunctions.cs`)
- Order functions → Invoice blob: writes invoice (evidence: `DurableFunctions/FunctionChaining/FunctionChainingFunctions.cs`)
- Order functions → Email composition: builds email (evidence: `DurableFunctions/FunctionChaining/FunctionChainingFunctions.cs`)
- Email composition → SendGrid: composes message
- Function caller → Vacation functions: requests vacation (evidence: `DurableFunctions/HumanInteraction/HumanInteractionFunctions.cs`)
- Vacation functions → Vacation request: deserializes input (evidence: `DurableFunctions/HumanInteraction/HumanInteractionFunctions.cs`)
- Vacation functions → Approval response: orchestrates decision (evidence: `DurableFunctions/HumanInteraction/HumanInteractionFunctions.cs`)
- Vacation functions → Vacation records: saves approved request (evidence: `DurableFunctions/HumanInteraction/HumanInteractionFunctions.cs`)
- Vacation functions → Email composition: composes notifications (evidence: `DurableFunctions/HumanInteraction/HumanInteractionFunctions.cs`)
- Vacation functions → SendGrid: sends email
- Function caller → Monitoring functions: starts monitoring
- Monitoring functions → Weather service: requests conditions
- Weather service → OpenWeatherMap: fetches weather (evidence: `DurableFunctions/Monitoring/OpenWeatherMapService.cs`)
- Function caller → Counter entity: invokes entity
- Function caller → Backup fan-out: starts backup
