{"version":1,"pages":[{"id":"CQreQT0fi8HIF1pxbHk9","title":"Elsa Workflows 3","pathname":"/","siteSpaceId":"sitesp_AnEHc","description":"Introducing Elsa Workflows 3"},{"id":"3Es7FvykjAnDuLfX09E0","title":"Concepts","pathname":"/getting-started/concepts","siteSpaceId":"sitesp_AnEHc","description":"This section provides a comprehensive overview of fundamental principles and key elements that form the foundation of Elsa.","breadcrumbs":[{"label":"Getting Started"}]},{"id":"DMx7boCaMhlcKXlRl30e","title":"Workflow Context","pathname":"/getting-started/concepts/workflow-context","siteSpaceId":"sitesp_AnEHc","description":"Understand what Elsa 3.8 stores in workflow state, activity state, variables, inputs, outputs, bookmarks, incidents, and execution logs.","breadcrumbs":[{"label":"Getting Started"},{"label":"Concepts"}]},{"id":"DzNygg2OVeNZOsRCfj5U","title":"Outcomes","pathname":"/getting-started/concepts/outcomes","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Getting Started"},{"label":"Concepts"}]},{"id":"BRphmwXf4G3hrpognqPg","title":"Correlation ID","pathname":"/getting-started/concepts/correlation-id","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Getting Started"},{"label":"Concepts"}]},{"id":"sN6bnvOn4T4PFGjmAmUz","title":"Architecture Overview","pathname":"/getting-started/architecture-overview","siteSpaceId":"sitesp_AnEHc","description":"Comprehensive architecture guide covering Elsa's components, execution model, data flow, and deployment patterns for architects and integrators.","breadcrumbs":[{"label":"Getting Started"}]},{"id":"k5BdGT3YG4GV4HqhI8Ep","title":"Hello World","pathname":"/getting-started/hello-world","siteSpaceId":"sitesp_AnEHc","description":"In this topic, we'll setup a simple Console and an ASP.NET Core application that can host and execute workflows.","breadcrumbs":[{"label":"Getting Started"}]},{"id":"0fMSZFx2pWPZX2i55Xpq","title":"Prerequisites","pathname":"/getting-started/prerequisites","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Getting Started"}]},{"id":"zJ4Njx3EQsvfCglfOrMk","title":"Packages","pathname":"/getting-started/packages","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Getting Started"}]},{"id":"TEAi96bmYToFd6Ny8YMY","title":"Upgrade to Elsa 3.8.0","pathname":"/getting-started/upgrading-to-3.8","siteSpaceId":"sitesp_AnEHc","description":"Upgrade an Elsa 3.7 application to the Elsa 3.8.0 stable Core, Studio, and Extensions packages.","breadcrumbs":[{"label":"Getting Started"}]},{"id":"DoAAlaf03M2wlwx5UVsR","title":"Database Configuration","pathname":"/getting-started/database-configuration","siteSpaceId":"sitesp_AnEHc","description":"Learn how to configure Elsa Workflows to use different database providers for persistence, including SQL Server, PostgreSQL, and MongoDB.","breadcrumbs":[{"label":"Getting Started"}]},{"id":"cPEWfdvfmHwQ7tYlvfb9","title":"Containers","pathname":"/getting-started/containers","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Getting Started"}]},{"id":"MEDMcZjYY6lg3O27Croa","title":"Docker","pathname":"/getting-started/containers/docker","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Getting Started"},{"label":"Containers"}]},{"id":"TopJGdOnWMVwMtxujDM8","title":"Docker Compose","pathname":"/getting-started/containers/docker-compose","siteSpaceId":"sitesp_AnEHc","description":"Explore various Docker Compose configurations for setting up Elsa and related services like PostgreSQL and Traefik.","breadcrumbs":[{"label":"Getting Started"},{"label":"Containers"}]},{"id":"LGKwT87XSFN4sGTdkdli","title":"Docker Quickstart","pathname":"/getting-started/containers/docker-compose/docker-quickstart","siteSpaceId":"sitesp_AnEHc","description":"Get started quickly with Elsa Workflows using Docker Compose. This guide provides a fast path to evaluation with a complete setup including Elsa Server, Studio, and database persistence.","breadcrumbs":[{"label":"Getting Started"},{"label":"Containers"},{"label":"Docker Compose"}]},{"id":"ijkoefZaJ9kkm9hlbcur","title":"Elsa Server + Studio","pathname":"/getting-started/containers/docker-compose/elsa-server-+-studio","siteSpaceId":"sitesp_AnEHc","description":"Using Docker Compose, you can quickly set up and run both Elsa Server and Elsa Studio. This guide walks you through creating a docker-compose.yml file to deploy these services.","breadcrumbs":[{"label":"Getting Started"},{"label":"Containers"},{"label":"Docker Compose"}]},{"id":"Ca4SGZRJ2CCaKkgRgP5M","title":"Elsa Server + Studio - Single Image","pathname":"/getting-started/containers/docker-compose/elsa-server-+-studio-single-image","siteSpaceId":"sitesp_AnEHc","description":"This guide demonstrates how to set up Elsa Server and Studio using Docker Compose, enabling you to run both components from a single Docker image.","breadcrumbs":[{"label":"Getting Started"},{"label":"Containers"},{"label":"Docker Compose"}]},{"id":"bF8RfbRf0LppijtxyuQI","title":"Persistent Database","pathname":"/getting-started/containers/docker-compose/persistent-database","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Getting Started"},{"label":"Containers"},{"label":"Docker Compose"}]},{"id":"ZUDccotcwSVh32aIP9bO","title":"Traefik","pathname":"/getting-started/containers/docker-compose/traefik","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Getting Started"},{"label":"Containers"},{"label":"Docker Compose"}]},{"id":"tDFIvL4jZxg4ObaBMkpP","title":"Elsa Server","pathname":"/application-types/elsa-server","siteSpaceId":"sitesp_AnEHc","description":"In this topic, we'll create an ASP.NET Core application that acts as a workflow server.","breadcrumbs":[{"label":"Application Types"}]},{"id":"On4rE5AtEa5KvZwJjiR2","title":"Elsa Studio","pathname":"/application-types/elsa-studio","siteSpaceId":"sitesp_AnEHc","description":"In this topic, we will create a separate ASP.NET Blazor Webassembly app and turn it into an Elsa Studio that connects to an Elsa Server.","breadcrumbs":[{"label":"Application Types"}]},{"id":"PCunLtPgQto3AIHLworz","title":"Elsa Server + Studio (WASM)","pathname":"/application-types/elsa-server-+-studio-wasm","siteSpaceId":"sitesp_AnEHc","description":"In this topic, we will create an ASP.NET Core application that acts as both an Elsa Server and an Elsa Studio.","breadcrumbs":[{"label":"Application Types"}]},{"id":"ZyyQBJMPCfayBRX4Ms6y","title":"V2 to V3 Migration Guide","pathname":"/guides/migration-v2-to-v3","siteSpaceId":"sitesp_AnEHc","description":"Complete migration guide from Elsa Workflows V2 to V3, covering breaking changes, custom activities, workflows, and concepts.","breadcrumbs":[{"label":"Guides"}]},{"id":"EdxHGiz8MerJfjbTzOVM","title":"Architecture","pathname":"/guides/architecture","siteSpaceId":"sitesp_AnEHc","description":"High-level overview of Elsa Workflows v3 architecture, covering workflow execution flow, core concepts like bookmarks and triggers, workflow runtimes, and multitenancy.","breadcrumbs":[{"label":"Guides"}]},{"id":"k0ZL5YdGmcUCmmVY68mX","title":"Execution Model","pathname":"/guides/architecture/execution-model","siteSpaceId":"sitesp_AnEHc","description":"Release-backed guide to Elsa's execution model in 3.8.0, covering direct execution, dispatched execution, triggers, bookmarks, stimuli, persistence, and recovery.","breadcrumbs":[{"label":"Guides"},{"label":"Architecture"}]},{"id":"WZnYlQVFy8o96qhFo18M","title":"Workflow Dispatcher Architecture","pathname":"/guides/architecture/workflow-dispatcher","siteSpaceId":"sitesp_AnEHc","description":"Deep dive into IWorkflowDispatcher: the core dispatching abstraction for queuing and executing workflows, covering request types, event ordering, and custom dispatcher implementations.","breadcrumbs":[{"label":"Guides"},{"label":"Architecture"}]},{"id":"yA1TzeO0gKP3Cbci61lL","title":"Workflow Dispatch Outbox","pathname":"/guides/architecture/workflow-dispatch-outbox","siteSpaceId":"sitesp_AnEHc","description":"Release-backed guidance for configuring, operating, and diagnosing Elsa's transactional outbox for workflow dispatch.","breadcrumbs":[{"label":"Guides"},{"label":"Architecture"}]},{"id":"h5h5fkuh8ODvyXZhrnKA","title":"Runtime Coordination Storage","pathname":"/guides/architecture/runtime-coordination-storage","siteSpaceId":"sitesp_AnEHc","description":"Configure the key-value and distributed-lock providers that Elsa uses for durable outbox records and multi-node workflow coordination.","breadcrumbs":[{"label":"Guides"},{"label":"Architecture"}]},{"id":"0KMTAPuofd8y83JK59kd","title":"Standalone and Modular Hosting","pathname":"/guides/architecture/standalone-and-modular-hosting","siteSpaceId":"sitesp_AnEHc","description":"Release-backed configuration matrix for code-first Elsa hosts and the CShells-based modular server in Elsa 3.8.0.","breadcrumbs":[{"label":"Guides"},{"label":"Architecture"}]},{"id":"kof9HPcku4rH4Vvf47IZ","title":"Proto.Actor Workflow Runtime","pathname":"/guides/architecture/protoactor-workflow-runtime","siteSpaceId":"sitesp_AnEHc","description":"Configure the Elsa 3.8.0 Proto.Actor workflow runtime for actor-based coordination across hosts, with explicit persistence and cluster boundaries.","breadcrumbs":[{"label":"Guides"},{"label":"Architecture"}]},{"id":"oc2o6VokL7LtnYU8Dwoo","title":"Onboarding","pathname":"/guides/onboarding","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"LtgsYVjRMVsDcrFOPvxp","title":"Hosting Elsa in an Existing App","pathname":"/guides/onboarding/hosting-elsa-in-existing-app","siteSpaceId":"sitesp_AnEHc","description":"Step-by-step guide to integrating Elsa Workflows into an existing ASP.NET Core application, including persistence setup, common pain points, and troubleshooting.","breadcrumbs":[{"label":"Guides"},{"label":"Onboarding"}]},{"id":"a12nDgAoMqIpf7fFI0m8","title":"Authentication & Authorization","pathname":"/guides/authentication","siteSpaceId":"sitesp_AnEHc","description":"Choose and configure authentication and authorization for Elsa Server, Elsa Studio, users, and API clients.","breadcrumbs":[{"label":"Guides"}]},{"id":"Yq3Ug8YL4g8zdc6JVPeT","title":"Elsa Identity","pathname":"/guides/authentication/elsa-identity","siteSpaceId":"sitesp_AnEHc","description":"Configure Elsa's built-in identity system for users, roles, tokens, and API applications.","breadcrumbs":[{"label":"Guides"},{"label":"Authentication & Authorization"}]},{"id":"HFkkRcgl2Pf54RqoNtgh","title":"API Keys","pathname":"/guides/authentication/api-keys","siteSpaceId":"sitesp_AnEHc","description":"Authenticate machine-to-machine Elsa API clients with application API keys.","breadcrumbs":[{"label":"Guides"},{"label":"Authentication & Authorization"}]},{"id":"ZiHiguHzkSmX19mho9zC","title":"Direct OpenID Connect","pathname":"/guides/authentication/direct-openid-connect","siteSpaceId":"sitesp_AnEHc","description":"Release-backed guide to wiring Elsa Server and Elsa Studio to external OpenID Connect identity providers in Elsa 3.8.","breadcrumbs":[{"label":"Guides"},{"label":"Authentication & Authorization"}]},{"id":"rEy4f7zhlY4foVSGsbH3","title":"External Authentication","pathname":"/guides/authentication/external-authentication","siteSpaceId":"sitesp_AnEHc","description":"Install, configure, operate, and migrate to Elsa's brokered External Authentication capability for Elsa Server and Elsa Studio.","breadcrumbs":[{"label":"Guides"},{"label":"Authentication & Authorization"}]},{"id":"qk4zvOcDzMsoMKTvq2tp","title":"Installation","pathname":"/guides/authentication/external-authentication/installation","siteSpaceId":"sitesp_AnEHc","description":"Install the Elsa 3.8.0 External Authentication broker, its OpenID Connect adapter, optional secret bridge, and durable persistence providers.","breadcrumbs":[{"label":"Guides"},{"label":"Authentication & Authorization"},{"label":"External Authentication"}]},{"id":"6X0NIKKTn9l3VCAOgXzj","title":"Configuration","pathname":"/guides/authentication/external-authentication/configuration","siteSpaceId":"sitesp_AnEHc","description":"Configure Elsa External Authentication connections, clients, callback URLs, secret bindings, identity policy, and permission mapping.","breadcrumbs":[{"label":"Guides"},{"label":"Authentication & Authorization"},{"label":"External Authentication"}]},{"id":"yTaKvG4Gw4yKwLlddZKG","title":"Keycloak Walkthrough","pathname":"/guides/authentication/external-authentication/keycloak","siteSpaceId":"sitesp_AnEHc","description":"A concrete end-to-end walkthrough for connecting Keycloak to Elsa External Authentication and signing in from Elsa Studio.","breadcrumbs":[{"label":"Guides"},{"label":"Authentication & Authorization"},{"label":"External Authentication"}]},{"id":"EuICLp1ehlw5j06xcrjL","title":"Studio Integration","pathname":"/guides/authentication/external-authentication/studio-integration","siteSpaceId":"sitesp_AnEHc","description":"Configure Elsa Studio as an Elsa External Authentication broker client in Elsa 3.8.0.","breadcrumbs":[{"label":"Guides"},{"label":"Authentication & Authorization"},{"label":"External Authentication"}]},{"id":"doRO7GqB0uq41bLhr0zz","title":"Administration","pathname":"/guides/authentication/external-authentication/administration","siteSpaceId":"sitesp_AnEHc","description":"Manage Elsa External Authentication connections, identity links, and sessions from Elsa Studio 3.8.0.","breadcrumbs":[{"label":"Guides"},{"label":"Authentication & Authorization"},{"label":"External Authentication"}]},{"id":"Z5tRjy7xDwKsJ0IlqfUY","title":"Extensibility","pathname":"/guides/authentication/external-authentication/extensibility","siteSpaceId":"sitesp_AnEHc","description":"Extend Elsa External Authentication with custom adapters, policies, matchers, permission grant sources, and Studio connection editors.","breadcrumbs":[{"label":"Guides"},{"label":"Authentication & Authorization"},{"label":"External Authentication"}]},{"id":"vNIJnix36UF7P33KkjVj","title":"Production and Security","pathname":"/guides/authentication/external-authentication/production","siteSpaceId":"sitesp_AnEHc","description":"Operate Elsa External Authentication safely in production, including durable state, clustered deployments, migrations, key management, and verification.","breadcrumbs":[{"label":"Guides"},{"label":"Authentication & Authorization"},{"label":"External Authentication"}]},{"id":"BfgpHNZevQhsPq6MBiOp","title":"REST API","pathname":"/guides/authentication/external-authentication/api","siteSpaceId":"sitesp_AnEHc","description":"Endpoint groups, concurrency rules, permissions, and safe automation patterns for the Elsa External Authentication REST API.","breadcrumbs":[{"label":"Guides"},{"label":"Authentication & Authorization"},{"label":"External Authentication"}]},{"id":"7qN6nEIacrFPIGMhBGHf","title":"Migrate from Direct OIDC","pathname":"/guides/authentication/external-authentication/migration-from-direct-oidc","siteSpaceId":"sitesp_AnEHc","description":"Move Elsa Studio from direct OpenID Connect to the Elsa 3.8.0 External Authentication broker, with a staged rollout and rollback plan.","breadcrumbs":[{"label":"Guides"},{"label":"Authentication & Authorization"},{"label":"External Authentication"}]},{"id":"FY9U2A6QUIT1a0D2ZZOT","title":"Troubleshooting","pathname":"/guides/authentication/external-authentication/troubleshooting","siteSpaceId":"sitesp_AnEHc","description":"Diagnose Elsa Studio External Authentication integration and administration issues in Elsa 3.8.0.","breadcrumbs":[{"label":"Guides"},{"label":"Authentication & Authorization"},{"label":"External Authentication"}]},{"id":"JQpkTX8EmrNUIfC4Ca19","title":"Elsa API Permissions","pathname":"/guides/authentication/permissions","siteSpaceId":"sitesp_AnEHc","description":"Release-backed reference for Elsa API permission claims, Studio capabilities, and least-privilege role templates in Elsa 3.8.0.","breadcrumbs":[{"label":"Guides"},{"label":"Authentication & Authorization"}]},{"id":"JKvwQdLYhuJmJUvPsjyC","title":"Custom Authentication","pathname":"/guides/authentication/custom-authentication","siteSpaceId":"sitesp_AnEHc","description":"Integrate a host-provided ASP.NET Core authentication scheme with Elsa API permissions.","breadcrumbs":[{"label":"Guides"},{"label":"Authentication & Authorization"}]},{"id":"jzl8tP3YuUus0KyG53Yw","title":"Disable Authentication in Development","pathname":"/guides/authentication/disable-authentication","siteSpaceId":"sitesp_AnEHc","description":"Disable Elsa API and Studio authorization for isolated development and test environments only.","breadcrumbs":[{"label":"Guides"},{"label":"Authentication & Authorization"}]},{"id":"rISUvdr3j9ds7cEunPxa","title":"Security & Hardening","pathname":"/guides/security","siteSpaceId":"sitesp_AnEHc","description":"Secure Elsa hosts, workflow ingress, bookmark resume URLs, and Studio deployments with focused production hardening guidance.","breadcrumbs":[{"label":"Guides"}]},{"id":"g7YqKWGIe5q20Ox70kkp","title":"Production Hardening","pathname":"/guides/security/production-hardening","siteSpaceId":"sitesp_AnEHc","description":"Harden an Elsa and Elsa Studio deployment with explicit browser boundaries, TLS and proxy controls, monitoring, incident diagnostics, and a production checklist.","breadcrumbs":[{"label":"Guides"},{"label":"Security & Hardening"}]},{"id":"UPLnNc6tqufnU97c8dR8","title":"HTTP Endpoint Security","pathname":"/guides/security/http-endpoint-security","siteSpaceId":"sitesp_AnEHc","description":"Secure Elsa HTTP workflow endpoints in 3.8.0 by separating workflow ingress authorization from Elsa API permissions and Studio access.","breadcrumbs":[{"label":"Guides"},{"label":"Security & Hardening"}]},{"id":"d1l26oc9KIQcbgRA8zN9","title":"Elsa API Rate Limiting","pathname":"/guides/security/elsa-api-rate-limiting","siteSpaceId":"sitesp_AnEHc","description":"Protect Elsa Workflows API endpoints with an ASP.NET Core rate-limiting policy and Elsa's route-scoped middleware helper.","breadcrumbs":[{"label":"Guides"},{"label":"Security & Hardening"}]},{"id":"Gf25sbNumCjVpDzZ09mF","title":"Bookmark Resume Tokens","pathname":"/guides/security/bookmark-resume-tokens","siteSpaceId":"sitesp_AnEHc","description":"Secure Elsa bookmark resume URLs with expirations, single-use bookmarks, revocation procedures, logging, and ingress controls.","breadcrumbs":[{"label":"Guides"},{"label":"Security & Hardening"}]},{"id":"LBPRchmdOFYM8LmU3bB1","title":"Public Trigger Tokens","pathname":"/guides/security/public-trigger-tokens","siteSpaceId":"sitesp_AnEHc","description":"Configure and operate Elsa's protected public event-trigger URLs, bookmark resume tokens, and shared Data Protection keys in a 3.8.0 deployment.","breadcrumbs":[{"label":"Guides"},{"label":"Security & Hardening"}]},{"id":"CiRu1oeK5GKMOjTkSZAT","title":"Secrets Management","pathname":"/guides/security/secrets-management","siteSpaceId":"sitesp_AnEHc","description":"Use Elsa's release-backed Secrets module to store, resolve, rotate, and reference sensitive values from workflows and Elsa Studio.","breadcrumbs":[{"label":"Guides"},{"label":"Security & Hardening"}]},{"id":"G4w4Jhrz6eLMckxLjDie","title":"Deployment","pathname":"/guides/deployment","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"HGfaXsMGwXQNYyJIHXAS","title":"Configuration Management","pathname":"/guides/deployment/configuration-management","siteSpaceId":"sitesp_AnEHc","description":"Manage Elsa Server, Elsa Studio, and modular host configuration with appsettings, environment overrides, and source-backed section names for release 3.8.0.","breadcrumbs":[{"label":"Guides"},{"label":"Deployment"}]},{"id":"ciJmTHd2TAHvec42D2aa","title":"Kubernetes Basics","pathname":"/guides/deployment/kubernetes","siteSpaceId":"sitesp_AnEHc","description":"Quick start guide for deploying Elsa Workflows to Kubernetes with PostgreSQL persistence, including configuration, troubleshooting, and production best practices.","breadcrumbs":[{"label":"Guides"},{"label":"Deployment"}]},{"id":"spQD2Sbh8QQ0vUjOQws8","title":"Kubernetes Deployment","pathname":"/guides/kubernetes-deployment","siteSpaceId":"sitesp_AnEHc","description":"Complete Kubernetes deployment guide for Elsa Workflows including Helm charts, deployment configurations, ingress setup, autoscaling, monitoring, service mesh integration, and production best practice","breadcrumbs":[{"label":"Guides"}]},{"id":"Rv0Z9Idv7Cyy6wxoVGwk","title":"Integration","pathname":"/guides/integration","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"z0VDlU46Pk3rRUt8Jz0S","title":"Blazor Dashboard","pathname":"/guides/integration/blazor-dashboard","siteSpaceId":"sitesp_AnEHc","description":"Guide to integrating Elsa Studio with Blazor Server applications, covering hosting patterns, authentication configuration, and troubleshooting common issues.","breadcrumbs":[{"label":"Guides"},{"label":"Integration"}]},{"id":"gDLbudcbP7pShDEPQvZE","title":"Message Broker Topology","pathname":"/guides/integration/message-broker-topology","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Integration"}]},{"id":"9jwmIJuKax1UZFYdZTJ4","title":"Clustering","pathname":"/guides/clustering","siteSpaceId":"sitesp_AnEHc","description":"Comprehensive guide to running Elsa Workflows in clustered and distributed production environments, covering architecture patterns, distributed locking, scheduling, and operational best practices.","breadcrumbs":[{"label":"Guides"}]},{"id":"fCVL6lRwr4vAqct6JUSY","title":"Performance & Scaling","pathname":"/guides/performance","siteSpaceId":"sitesp_AnEHc","description":"Release-backed guidance for measuring and tuning Elsa 3.8.0 throughput without trading away workflow durability or operational visibility by accident.","breadcrumbs":[{"label":"Guides"}]},{"id":"Mz66HxT2ubICSLwg7COU","title":"Throughput Tuning","pathname":"/guides/performance/throughput-tuning","siteSpaceId":"sitesp_AnEHc","description":"Small, release-backed Elsa 3.8.0 configuration examples for testing commit, worker, and transactional-outbox tradeoffs under load.","breadcrumbs":[{"label":"Guides"},{"label":"Performance & Scaling"}]},{"id":"4AnZvGZUECEJ2A2kX7DI","title":"API & Client","pathname":"/guides/api-client","siteSpaceId":"sitesp_AnEHc","description":"A release-3.8 reference for Elsa's management API, .NET client interfaces, endpoint permissions, and bookmark-resume callbacks.","breadcrumbs":[{"label":"Guides"}]},{"id":"HfA51nZXIW1O9uIvoN3C","title":"Workflow-definition labels","pathname":"/guides/workflow-definition-labels","siteSpaceId":"sitesp_AnEHc","description":"Release-backed guide to organizing workflow definitions with labels in Elsa 3.8.0, including Studio setup, API usage, filtering, persistence, and permissions.","breadcrumbs":[{"label":"Guides"}]},{"id":"VbTM0hNqgMFQvzbCj47G","title":"Persistence","pathname":"/guides/persistence","siteSpaceId":"sitesp_AnEHc","description":"Comprehensive guide to choosing, configuring, and tuning persistence providers for Elsa Workflows v3, covering EF Core, MongoDB, Dapper, and Elasticsearch, along with retention, migrations, and operat","breadcrumbs":[{"label":"Guides"}]},{"id":"ApLvi3Tevq8dejQVw50Y","title":"SQL Server","pathname":"/guides/persistence/sql-server","siteSpaceId":"sitesp_AnEHc","description":"Complete guide to configuring SQL Server as the persistence provider for Elsa Workflows v3, including setup, configuration, and migration guidance.","breadcrumbs":[{"label":"Guides"},{"label":"Persistence"}]},{"id":"jbtqzfSwZJyLHMSbeYtP","title":"EF Core Migrations","pathname":"/guides/persistence/ef-migrations","siteSpaceId":"sitesp_AnEHc","description":"Complete guide to working with Entity Framework Core migrations in Elsa Workflows v3, including custom migrations, DbContext management, and versioning strategies.","breadcrumbs":[{"label":"Guides"},{"label":"Persistence"}]},{"id":"sugwzgaUQzHOJuaHiLAt","title":"EF Core Setup","pathname":"/guides/persistence/efcore-setup","siteSpaceId":"sitesp_AnEHc","description":"Minimal example to enable Entity Framework Core persistence for Elsa Workflows, including database provider setup and migrations.","breadcrumbs":[{"label":"Guides"},{"label":"Persistence"}]},{"id":"ADV52SaWlVHcYvLGLXrC","title":"MongoDB Setup","pathname":"/guides/persistence/mongodb-setup","siteSpaceId":"sitesp_AnEHc","description":"Minimal example to enable MongoDB persistence for Elsa Workflows, including connection configuration and indexing notes.","breadcrumbs":[{"label":"Guides"},{"label":"Persistence"}]},{"id":"EQ18lCPnYBvstCIKITDU","title":"Dapper Setup","pathname":"/guides/persistence/dapper-setup","siteSpaceId":"sitesp_AnEHc","description":"Configure Elsa Workflows 3.8.1 with the Dapper persistence provider, including SQL dialect selection and FluentMigrator schema setup.","breadcrumbs":[{"label":"Guides"},{"label":"Persistence"}]},{"id":"eSyG7gsKpAeMpgSeGC7k","title":"Elasticsearch Setup","pathname":"/guides/persistence/elasticsearch-setup","siteSpaceId":"sitesp_AnEHc","description":"Configure the Elsa 3.8.1 Elasticsearch extension for workflow-instance and execution-log persistence, with its provider boundaries and production caveats.","breadcrumbs":[{"label":"Guides"},{"label":"Persistence"}]},{"id":"h7t1fXklpUObK7dHtgUu","title":"Indexing Notes","pathname":"/guides/persistence/indexing-notes","siteSpaceId":"sitesp_AnEHc","description":"Recommended database indexes for Elsa Workflows persistence stores to optimize common query patterns.","breadcrumbs":[{"label":"Guides"},{"label":"Persistence"}]},{"id":"mEsiSEWaBpnsxPA41ier","title":"HTTP Workflows","pathname":"/guides/http-workflows","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"kSfLJMWeE3tfbqSMfoVi","title":"Tutorial","pathname":"/guides/http-workflows/tutorial","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Guides"},{"label":"HTTP Workflows"}]},{"id":"oMb4GyaCwyzJHF9zeUzm","title":"Programmatic","pathname":"/guides/http-workflows/programmatic","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Guides"},{"label":"HTTP Workflows"}]},{"id":"sMrHHQEsQQC269Gcov3P","title":"Designer","pathname":"/guides/http-workflows/designer","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Guides"},{"label":"HTTP Workflows"}]},{"id":"yaYuubR9GaUJ0hIduzOg","title":"OpenAPI for HTTP workflow triggers","pathname":"/guides/http-workflows/openapi","siteSpaceId":"sitesp_AnEHc","description":"Expose an OpenAPI document for Elsa HTTP workflow triggers and understand the generated document's runtime and security boundaries in Elsa 3.8.0.","breadcrumbs":[{"label":"Guides"},{"label":"HTTP Workflows"}]},{"id":"GDLJ9N7IWfU2lgGUXmpy","title":"External Application Interaction","pathname":"/guides/external-application-interaction","siteSpaceId":"sitesp_AnEHc","description":"Configure Elsa 3.8.0 inbound webhook events and outbound webhook sinks, including custom activities, payloads, and endpoint security.","breadcrumbs":[{"label":"Guides"}]},{"id":"uiM3Yht1MhT2kzpnlBaq","title":"Loading Workflows from JSON","pathname":"/guides/loading-workflows-from-json","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"1TF8pgK9h7DXL21jguHD","title":"Loading Workflows from ElsaScript","pathname":"/guides/loading-workflows-from-elsascript","siteSpaceId":"sitesp_AnEHc","description":"Load ElsaScript workflow files from local or cloud blob storage in Elsa 3.8.0, including the format boundary, registration, and limitations.","breadcrumbs":[{"label":"Guides"}]},{"id":"1zPNjazmEksokq6M4Ecg","title":"Plugins & Modules","pathname":"/guides/plugins-modules","siteSpaceId":"sitesp_AnEHc","description":"Complete guide to extending Elsa Workflows with custom modules, features, and activities. Learn how to create reusable plugins and distribute them as NuGet packages.","breadcrumbs":[{"label":"Guides"}]},{"id":"lJCSPUnzmnO7yFkG1Z0B","title":"Package Manifests for Extensions","pathname":"/guides/plugins-modules/package-manifests","siteSpaceId":"sitesp_AnEHc","description":"Explain the Elsa 3.8 package manifest generated for CShells extension packages, including runtime compatibility, infrastructure requirements, and deploy-time settings.","breadcrumbs":[{"label":"Guides"},{"label":"Plugins & Modules"}]},{"id":"2JqxkRHvoRlJYAMrGtne","title":"Extensibility","pathname":"/guides/modules-and-plugins","siteSpaceId":"sitesp_AnEHc","description":"Learn how to extend Elsa Workflows v3 with custom modules and plugins. Covers module registration, contributing activities, services, and API endpoints with practical examples.","breadcrumbs":[{"label":"Guides"}]},{"id":"rsyqz1VnejQGJV4ImAfl","title":"DropIns","pathname":"/guides/modules-and-plugins/dropins","siteSpaceId":"sitesp_AnEHc","description":"Package and discover server-side Elsa extensions from a DropIns directory in Elsa 3.8.0.","breadcrumbs":[{"label":"Guides"},{"label":"Extensibility"}]},{"id":"zT4WRYgwRLoSGt6NdT9A","title":"Testing & Debugging Workflows","pathname":"/guides/testing-debugging","siteSpaceId":"sitesp_AnEHc","description":"Test custom Elsa activities and workflows with the released Elsa testing fixtures, then diagnose real workflow instances with the journal and runtime tools.","breadcrumbs":[{"label":"Guides"}]},{"id":"D2XtpkiMlseFmCKyLszV","title":"Weaver and AI Workflow Assistance","pathname":"/guides/ai-workflow-assistance","siteSpaceId":"sitesp_AnEHc","description":"Configure and use Elsa's release-backed AI Host and Weaver Studio workspace for grounded, reviewable workflow assistance.","breadcrumbs":[{"label":"Guides"}]},{"id":"Ia2dat1u0rP94Xnp0EMp","title":"Agents Activities and Studio Administration","pathname":"/guides/ai-agents","siteSpaceId":"sitesp_AnEHc","description":"Configure Elsa Agents, expose agent activities and APIs, and manage agents from Elsa Studio.","breadcrumbs":[{"label":"Guides"}]},{"id":"EeuRBpMfWUmrGWGgCJfA","title":"Running Workflows","pathname":"/guides/running-workflows","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"qIBctFdpZSb3yvCMVRPo","title":"Using Elsa Studio","pathname":"/guides/running-workflows/using-elsa-studio","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Running Workflows"}]},{"id":"nSoyrImY5bwcSynUZwHy","title":"Altering a Running Workflow Instance","pathname":"/guides/running-workflows/altering-workflow-instances","siteSpaceId":"sitesp_AnEHc","description":"Choose the right Elsa 3.8.0 alteration path, apply changes safely, and monitor the resulting workflow and alteration jobs.","breadcrumbs":[{"label":"Guides"},{"label":"Running Workflows"}]},{"id":"euntzfkoKTUusqW7LFKM","title":"Using a Trigger","pathname":"/guides/running-workflows/using-a-trigger","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Running Workflows"}]},{"id":"e1Zo4XrmJVUEg0n2UzvV","title":"Timer and Scheduled Workflows","pathname":"/guides/running-workflows/timer-and-scheduled-workflows","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Running Workflows"}]},{"id":"Xt6wsMlqAwkLD7MvoHUL","title":"Quartz Scheduling","pathname":"/guides/running-workflows/quartz-scheduling","siteSpaceId":"sitesp_AnEHc","description":"Configure Quartz.NET as Elsa's persistent workflow scheduler.","breadcrumbs":[{"label":"Guides"},{"label":"Running Workflows"}]},{"id":"dESlf4BlpBhLUIuddwfp","title":"Workflow Definition Version Lifecycle","pathname":"/guides/running-workflows/workflow-definition-lifecycle","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Running Workflows"}]},{"id":"4AvebolYqgs4HrxKpSf7","title":"Hangfire Integration","pathname":"/guides/running-workflows/hangfire-integration","siteSpaceId":"sitesp_AnEHc","description":"Configure Hangfire as Elsa's durable workflow scheduler.","breadcrumbs":[{"label":"Guides"},{"label":"Running Workflows"}]},{"id":"ennWPQ8dV8cXmF9zRiv9","title":"Long-Running Workflows","pathname":"/guides/running-workflows/long-running-workflows","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Running Workflows"}]},{"id":"EuM9eZn5QlypnKTTCZtM","title":"Dispatch Workflow Activity","pathname":"/guides/running-workflows/dispatch-workflow-activity","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Running Workflows"}]},{"id":"p0Gc3QdtRqFFDusHjOrJ","title":"Bulk Dispatch Workflows Activity","pathname":"/guides/running-workflows/bulk-dispatch-workflows","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Running Workflows"}]},{"id":"Szhng6E1zKRsXWfVmOun","title":"State machines","pathname":"/guides/state-machines","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"Q1RVyLnAARoV46KqohIG","title":"Studio User Guide","pathname":"/guides/studio","siteSpaceId":"sitesp_AnEHc","description":"A comprehensive guide to using Elsa Studio, the visual designer and admin UI for Elsa Workflows v3.","breadcrumbs":[{"label":"Guides"}]},{"id":"wXRyFDpZ9nxZgwiKX5UU","title":"Expressions","pathname":"/guides/studio/expressions","siteSpaceId":"sitesp_AnEHc","description":"Learn how Elsa Studio expression editors map to Elsa Server expression engines, how to access workflow variables, and which syntax choices are actually available in Elsa 3.8.","breadcrumbs":[{"label":"Guides"},{"label":"Studio User Guide"}]},{"id":"kgjHFqx2nvxmJC9dpKP4","title":"JavaScript IntelliSense Type Definitions","pathname":"/guides/studio/javascript-type-definition-providers","siteSpaceId":"sitesp_AnEHc","description":"Extend Elsa Studio JavaScript IntelliSense with release-backed TypeScript declarations from the Elsa Server.","breadcrumbs":[{"label":"Guides"},{"label":"Studio User Guide"}]},{"id":"tDPkL4Wj7cZfdHNEvwdh","title":"Custom Activity Icons","pathname":"/guides/studio/custom-icons","siteSpaceId":"sitesp_AnEHc","description":"Add custom activity icons to Elsa Studio with a release-backed display settings provider.","breadcrumbs":[{"label":"Guides"},{"label":"Studio User Guide"}]},{"id":"tgWxcxODfftcpM9d8GwX","title":"Customization","pathname":"/guides/studio/customization","siteSpaceId":"sitesp_AnEHc","description":"Source-backed guide to the main Elsa Studio customization seams in release 3.8.0, including host composition, branding, menus, widgets, activity pickers, and editor extensibility.","breadcrumbs":[{"label":"Guides"},{"label":"Studio User Guide"}]},{"id":"lEbj0dOnKEqbLtMP86u3","title":"Custom UI Components","pathname":"/guides/studio/custom-ui-components","siteSpaceId":"sitesp_AnEHc","description":"Source-backed guide to customizing Elsa Studio input editors in release 3.8.0 using backend UI hints, property UI handlers, and Studio UI hint handlers.","breadcrumbs":[{"label":"Guides"},{"label":"Studio User Guide"}]},{"id":"FNteEnZuyBLfwZuaAzwT","title":"Integration","pathname":"/guides/studio/integration","siteSpaceId":"sitesp_AnEHc","description":"Source-backed guide to the Elsa Studio host models available in release 3.8.0, including standalone hosts, custom elements, backend configuration, and authentication.","breadcrumbs":[{"label":"Guides"},{"label":"Studio User Guide"}]},{"id":"4Flxpjd3TF0wMympTozP","title":"Custom Elements Embedding","pathname":"/guides/studio/integration/custom-elements","siteSpaceId":"sitesp_AnEHc","description":"Source-backed cookbook for embedding Elsa Studio custom elements in release 3.8.0, including backend configuration, authentication, tenant headers, and React usage.","breadcrumbs":[{"label":"Guides"},{"label":"Studio User Guide"},{"label":"Integration"}]},{"id":"iuaqmBvArrQCQjRyAiMh","title":"Platform Artifact Submission","pathname":"/guides/studio/integration/platform-integration","siteSpaceId":"sitesp_AnEHc","description":"Release-backed guidance for submitting Elsa Studio workflow definitions as Elsa Platform artifacts in Elsa Studio 3.8.0.","breadcrumbs":[{"label":"Guides"},{"label":"Studio User Guide"},{"label":"Integration"}]},{"id":"57CffbLiMPexW9hk7uKL","title":"Workflow Patterns","pathname":"/guides/patterns","siteSpaceId":"sitesp_AnEHc","description":"A practical, pattern-based guide to designing and implementing common workflow patterns with Elsa Workflows v3. Each pattern provides grounded guidance, code snippets, pitfalls, and references to elsa","breadcrumbs":[{"label":"Guides"}]},{"id":"6Plz2IHslqkqnBwyARDc","title":"Troubleshooting","pathname":"/guides/troubleshooting","siteSpaceId":"sitesp_AnEHc","description":"Symptom-first entry point for diagnosing Elsa workflow, host, and Studio issues.","breadcrumbs":[{"label":"Guides"}]},{"id":"0tz2mdBHeWVESIJ5I4X8","title":"Frequently Asked Questions","pathname":"/guides/faq","siteSpaceId":"sitesp_AnEHc","description":"Answers to common Elsa Workflows questions about designing, starting, waiting, versioning, and operating workflows.","breadcrumbs":[{"label":"Guides"}]},{"id":"w5qtrXxcleuzCp03i4PT","title":"Community & Resources","pathname":"/guides/community-resources","siteSpaceId":"sitesp_AnEHc","description":"Find official Elsa learning, support, release, and contribution resources.","breadcrumbs":[{"label":"Guides"}]},{"id":"z6zx4MZelJhNZ0X4K4FN","title":"Adoption Evidence and Case Studies","pathname":"/guides/case-studies","siteSpaceId":"sitesp_AnEHc","description":"Adoption evidence, reference architectures, and case-study guidance for Elsa Workflows.","breadcrumbs":[{"label":"Guides"}]},{"id":"xlFHthZfb0KmQ9FcWiYe","title":"Activity Reference","pathname":"/activities/activity-reference","siteSpaceId":"sitesp_AnEHc","description":"Choose the Elsa activity that fits a workflow task and find its detailed guide.","breadcrumbs":[{"label":"Activities"}]},{"id":"fsvaZf4JfAtsF3CfWIJj","title":"Common Properties","pathname":"/activities/common-properties","siteSpaceId":"sitesp_AnEHc","description":"There are few properties that all activities share, so we introduce them here and omit including them in introduction of every activity.","breadcrumbs":[{"label":"Activities"}]},{"id":"3gBt1hU7vDAYkccT7mB1","title":"Blocking Activities & Triggers","pathname":"/activities/blocking-and-triggers","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Activities"}]},{"id":"tUgzMWFk60vlfnsJSPST","title":"Control Flow","pathname":"/activities/control-flow","siteSpaceId":"sitesp_AnEHc","description":"This section covers all built-in control flow activities.","breadcrumbs":[{"label":"Activities"}]},{"id":"aDcG7zZqDAgp19TQFvlC","title":"Decision","pathname":"/activities/control-flow/decision","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Activities"},{"label":"Control Flow"}]},{"id":"I1oV3oubIboTe0lXaUp6","title":"Parallel Execution","pathname":"/activities/parallel-execution","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Activities"}]},{"id":"SlLmKSk0G1rVKkZbiNfW","title":"MassTransit","pathname":"/activities/masstransit","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Activities"}]},{"id":"fcPNhb2YlCDVmvVuwloe","title":"Tutorial","pathname":"/activities/masstransit/tutorial","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Activities"},{"label":"MassTransit"}]},{"id":"enR07XpOsueHRBcmDMyr","title":"Email","pathname":"/activities/email","siteSpaceId":"sitesp_AnEHc","description":"Send email from Elsa workflows with the 3.8.0 Email extension.","breadcrumbs":[{"label":"Activities"}]},{"id":"3AnBZqs6kppjoOZ62lHz","title":"CSV","pathname":"/activities/csv","siteSpaceId":"sitesp_AnEHc","description":"Read and map CSV data in Elsa workflows with the 3.8.0 CSV extension.","breadcrumbs":[{"label":"Activities"}]},{"id":"96v9OPIzcEMuDW1lIvTE","title":"GitHub","pathname":"/activities/github","siteSpaceId":"sitesp_AnEHc","description":"Use the Elsa.DevOps.GitHub extension to call GitHub from workflows in Elsa 3.8.0.","breadcrumbs":[{"label":"Activities"}]},{"id":"1H8Q1Rv3Zad9Tjwqm3IM","title":"Slack","pathname":"/activities/slack","siteSpaceId":"sitesp_AnEHc","description":"Use the Elsa Slack extension to call Slack from workflows, with the release-specific registration and event-trigger boundaries.","breadcrumbs":[{"label":"Activities"}]},{"id":"IJzZoUkrfWG7Q00AlhZb","title":"I/O and Compression","pathname":"/activities/io-compression","siteSpaceId":"sitesp_AnEHc","description":"Normalize workflow content and create ZIP archives with Elsa 3.8.0.","breadcrumbs":[{"label":"Activities"}]},{"id":"NpY6P4k4ZUVBLIPCRZrm","title":"Telnyx Voice and Webhooks","pathname":"/activities/telnyx","siteSpaceId":"sitesp_AnEHc","description":"Use the Elsa Telnyx extension for voice workflows and webhook triggers in Elsa 3.8.0.","breadcrumbs":[{"label":"Activities"}]},{"id":"wHdhfNo4YnDUWdJ7sCmt","title":"Orchard Core Content","pathname":"/activities/orchard-core","siteSpaceId":"sitesp_AnEHc","description":"Use the Elsa Orchard Core extension for content management and content-item events in Elsa 3.8.0.","breadcrumbs":[{"label":"Activities"}]},{"id":"Bg0Dt08Nj1wxNRI2rwZA","title":"Azure Blob Upload","pathname":"/activities/azure-blob","siteSpaceId":"sitesp_AnEHc","description":"Upload JSON data to Azure Blob Storage from an Elsa 3.8.0 workflow.","breadcrumbs":[{"label":"Activities"}]},{"id":"6OOOHEfQJOOomdo5YMFQ","title":"File Storage","pathname":"/activities/file-storage","siteSpaceId":"sitesp_AnEHc","description":"Read and write files from Elsa 3.8.0 workflows with a configurable storage provider.","breadcrumbs":[{"label":"Activities"}]},{"id":"JJcDVsAeI2IT5KGRnY1j","title":"SQL activities","pathname":"/activities/sql","siteSpaceId":"sitesp_AnEHc","description":"Configure Elsa's SQL extension and choose the right SQL activity for queries, commands, and scalar values.","breadcrumbs":[{"label":"Activities"}]},{"id":"Q2mb1vDAKNgZylLXWPzc","title":"Azure Service Bus","pathname":"/activities/azure-service-bus","siteSpaceId":"sitesp_AnEHc","description":"Use Azure Service Bus queues and topics from Elsa workflows in 3.8.0.","breadcrumbs":[{"label":"Activities"}]},{"id":"PNFQI3ZJvgIrqSkECo8z","title":"Kafka activities","pathname":"/activities/kafka","siteSpaceId":"sitesp_AnEHc","description":"Configure Apache Kafka consumers and producers for Elsa workflows in 3.8.0.","breadcrumbs":[{"label":"Activities"}]},{"id":"FefmhhdEuJrKhetnEsWV","title":"Diagnostics","pathname":"/activities/diagnostics","siteSpaceId":"sitesp_AnEHc","description":"Covers all activities in the Diagnostics category","breadcrumbs":[{"label":"Activities"}]},{"id":"uYKNqiebSrBINJCLBqt2","title":"Log","pathname":"/activities/diagnostics/log","siteSpaceId":"sitesp_AnEHc","description":"Notes about logging from workflows in Elsa 3.8.0","breadcrumbs":[{"label":"Activities"},{"label":"Diagnostics"}]},{"id":"yD3Q9uo1kg5oBy7dm605","title":"C#","pathname":"/expressions/c","siteSpaceId":"sitesp_AnEHc","description":"In this section, we cover some of the built-in variables and functions available to the C# expression syntax.","breadcrumbs":[{"label":"Expressions"}]},{"id":"pvPKeOzrxgLPlKOpJ6hZ","title":"JavaScript","pathname":"/expressions/javascript","siteSpaceId":"sitesp_AnEHc","description":"In this section, we cover some of the built-in variables and functions available to the JavaScript expression syntax.","breadcrumbs":[{"label":"Expressions"}]},{"id":"PFzilEeJY80C4Axc7kZD","title":"Python","pathname":"/expressions/python","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Expressions"}]},{"id":"izW93iGzXa78xX1GynZs","title":"Liquid","pathname":"/expressions/liquid","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Expressions"}]},{"id":"qULpF8u793nzDV85VCPy","title":"Custom Activities","pathname":"/extensibility/custom-activities","siteSpaceId":"sitesp_AnEHc","description":"Release-backed guide to authoring custom Elsa activities in 3.8.0, including inputs, outputs, bookmarks, triggers, registration, Studio metadata, and testing.","breadcrumbs":[{"label":"Extensibility"}]},{"id":"YgLyHbC6GzSNFwqKTj0X","title":"Connections for Activities","pathname":"/extensibility/connections","siteSpaceId":"sitesp_AnEHc","description":"Use Elsa 3.8.0 Connections to share named configuration between activities, expose connection descriptors, and choose a durable persistence boundary.","breadcrumbs":[{"label":"Extensibility"}]},{"id":"UPiDSzmVfLBb7sbSzUcn","title":"Activity Port Providers","pathname":"/extensibility/activity-port-providers","siteSpaceId":"sitesp_AnEHc","description":"Source-backed guide to Elsa Studio activity port providers in release 3.8.0, including dynamic ports, embedded activities, provider selection, and custom registration.","breadcrumbs":[{"label":"Extensibility"}]},{"id":"erCFXaL8xLVywCXu3IgT","title":"Registering Custom Types","pathname":"/extensibility/custom-types","siteSpaceId":"sitesp_AnEHc","description":"Register custom CLR types for Elsa workflow variables, inputs, outputs, expressions, serialization, and Elsa Studio in Elsa 3.8.0.","breadcrumbs":[{"label":"Extensibility"}]},{"id":"2kZiV2p3VDdZRbd2gsol","title":"Workflow Providers","pathname":"/extensibility/workflow-providers","siteSpaceId":"sitesp_AnEHc","description":"Explain how Elsa workflow providers load workflow definitions from code, files, or external systems and how reload, persistence, and Studio fit together in Elsa 3.8.0.","breadcrumbs":[{"label":"Extensibility"}]},{"id":"e5vOz8lePgZWGvtTsZcr","title":"Workflow Context Providers","pathname":"/extensibility/workflow-contexts","siteSpaceId":"sitesp_AnEHc","description":"Register application-specific workflow context providers and configure their use in Elsa workflows and Elsa Studio.","breadcrumbs":[{"label":"Extensibility"}]},{"id":"N0RmniuxvSxk5wgotd8U","title":"Activity Type Providers","pathname":"/extensibility/activity-type-providers","siteSpaceId":"sitesp_AnEHc","description":"Explain how Elsa activity type providers create descriptors, how the runtime refreshes them, and how Elsa Studio uses them to design and run workflows.","breadcrumbs":[{"label":"Extensibility"}]},{"id":"saltKKGrOvemPonlb0Uq","title":"OpenTelemetry Workflow and Activity Tracing","pathname":"/extensibility/opentelemetry-tracing","siteSpaceId":"sitesp_AnEHc","description":"Configure Elsa's release/3.8.0 OpenTelemetry workflow and activity tracing middleware, understand its spans, and customize fault metadata.","breadcrumbs":[{"label":"Extensibility"}]},{"id":"4QGqzG5MBoWpnNoMMmPa","title":"Custom Resilience Strategies","pathname":"/extensibility/custom-resilience-strategies","siteSpaceId":"sitesp_AnEHc","description":"Add custom Polly-based resilience strategies and retry diagnostics to Elsa 3.8.0 workflows.","breadcrumbs":[{"label":"Extensibility"}]},{"id":"p5TvAXmzzFAyRd50O6SM","title":"Reusable Triggers","pathname":"/extensibility/reusable-triggers-3.5-preview","siteSpaceId":"sitesp_AnEHc","description":"This page explains how to create custom trigger-based activities by reusing built-in base classes like `EventBase`, `TimerBase`, and `HttpEndpointBase`. It provides examples and guidance.","breadcrumbs":[{"label":"Extensibility"}]},{"id":"SzSneqtx9jjSStlIABTn","title":"Introduction","pathname":"/multitenancy/introduction","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Multitenancy"}]},{"id":"V9Lx3fRRGbMI280etbM6","title":"Setup","pathname":"/multitenancy/setup","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Multitenancy"}]},{"id":"ao56bA7DkE3OsjsVbXn4","title":"Storage boundaries","pathname":"/multitenancy/storage-boundaries","siteSpaceId":"sitesp_AnEHc","description":"Explain how Elsa 3.8.2 separates tenant resolution from storage isolation, including the default in-memory key-value store boundary.","breadcrumbs":[{"label":"Multitenancy"}]},{"id":"j0s9n0XjzauuXzijLQ64","title":"Monitoring & Observability","pathname":"/operate/monitoring-observability","siteSpaceId":"sitesp_AnEHc","description":"Release-backed guide to observing Elsa 3.8.2 with incidents, execution logs, activity execution records, Studio diagnostics, and OpenTelemetry.","breadcrumbs":[{"label":"Operate"}]},{"id":"LxQLlPNUOK1ankGSVRI8","title":"Structured Logs","pathname":"/operate/structured-logs","siteSpaceId":"sitesp_AnEHc","description":"Configure Elsa 3.8.2 structured log capture, Studio diagnostics, redaction, and durable storage.","breadcrumbs":[{"label":"Operate"}]},{"id":"dJhViO2oTyEZWWgAUMOr","title":"Console Logs","pathname":"/operate/console-logs","siteSpaceId":"sitesp_AnEHc","description":"Configure Elsa 3.8.2 raw console-log capture, filtering, SignalR streaming, and Elsa Studio operations.","breadcrumbs":[{"label":"Operate"}]},{"id":"PxzopwTMCMa6dq4Xlaji","title":"Readiness and Health Checks","pathname":"/operate/readiness-and-health-checks","siteSpaceId":"sitesp_AnEHc","description":"Release-backed guidance for configuring Elsa runtime, persistence, and distributed-lock readiness checks.","breadcrumbs":[{"label":"Operate"}]},{"id":"mi1S1F2ECi18Z8FEhhMM","title":"Runtime Administration and Graceful Drain","pathname":"/operate/runtime-administration","siteSpaceId":"sitesp_AnEHc","description":"Release-backed operator guide for pausing, resuming, draining, and checking an Elsa 3.8.1 workflow runtime.","breadcrumbs":[{"label":"Operate"}]},{"id":"eGGlDlpbChAgVqvzwe9V","title":"Distributed Tracing","pathname":"/operate/distributed-tracing","siteSpaceId":"sitesp_AnEHc","description":"Release-backed guide to tracing Elsa 3.8.2 workflows with Elsa.OpenTelemetry workflow/activity middleware and the OpenTelemetry diagnostics collector.","breadcrumbs":[{"label":"Operate"}]},{"id":"rFdTlGBoHYT8wK3aoKpm","title":"Investigate a Workflow Instance","pathname":"/operate/workflow-state-and-journal","siteSpaceId":"sitesp_AnEHc","description":"Investigate a live Elsa 3.8.2 workflow instance with Studio and the runtime APIs for state, journal entries, activity executions, and variables.","breadcrumbs":[{"label":"Operate"}]},{"id":"tXcmoxQGXfaWCMwyrPWa","title":"Variables","pathname":"/operate/workflow-instance-variables","siteSpaceId":"sitesp_AnEHc","description":"Inspect and update workflow instance variables through Elsa Studio, the runtime API, or `IWorkflowInstanceVariableManager`.","breadcrumbs":[{"label":"Operate"}]},{"id":"DFPXQeAxDMfIMv4b8Dus","title":"Activation Strategies","pathname":"/operate/workflow-activation-strategies","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Operate"}]},{"id":"plOomPnc3q2H1lEfIp8Y","title":"Incidents","pathname":"/operate/incidents","siteSpaceId":"sitesp_AnEHc","description":"Release-backed guide to faults, incidents, retries, and operator recovery in Elsa 3.8.2.","breadcrumbs":[{"label":"Operate"}]},{"id":"5lPU4qk1QoFQJuVpIkVc","title":"Strategies","pathname":"/operate/incidents/strategies","siteSpaceId":"sitesp_AnEHc","description":"Built-in incident strategies and their real 3.8.2 behavior.","breadcrumbs":[{"label":"Operate"},{"label":"Incidents"}]},{"id":"8NC8d1HzgvO6dQ9Y20LD","title":"Configuration","pathname":"/operate/incidents/configuration","siteSpaceId":"sitesp_AnEHc","description":"Release-backed incident strategy configuration for Elsa 3.8.2 hosts and workflow definitions.","breadcrumbs":[{"label":"Operate"},{"label":"Incidents"}]},{"id":"8jJ759DHYhhbrzZ8JoFc","title":"Log Persistence","pathname":"/optimize/log-persistence","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Optimize"}]},{"id":"d9nWlfgTMrOXhQdOZkib","title":"Retention","pathname":"/optimize/retention","siteSpaceId":"sitesp_AnEHc","description":"Configure release-backed retention policies that remove workflow instances and their related runtime records.","breadcrumbs":[{"label":"Optimize"}]},{"id":"hrKQn3ZdRj4tukNCLuqw","title":"Worker Count","pathname":"/optimize/workers","siteSpaceId":"sitesp_AnEHc","description":"This section explains how to configure Elsa to use more workers.","breadcrumbs":[{"label":"Optimize"}]},{"id":"gi7iD15yF7UVlqeva8pB","title":"Distributed Hosting","pathname":"/hosting/distributed-hosting","siteSpaceId":"sitesp_AnEHc","description":"Guide to configuring Elsa Workflows for distributed environments, covering runtime, locking, caching, and Quartz.NET clustering.","breadcrumbs":[{"label":"Hosting"}]},{"id":"oVloOQcXQIuAwFa0s5S8","title":"Studio Tour & Troubleshooting","pathname":"/studio/studio-tour-troubleshooting","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Studio"}]},{"id":"cT4ez6lP4vVrtneFHm4z","title":"Design","pathname":"/studio/design","siteSpaceId":"sitesp_AnEHc","description":"This section displays the available customization options for Elsa Studio.","breadcrumbs":[{"label":"Studio"}]},{"id":"7TrFwFgfYqT8b70TyhWr","title":"Workflow Editor Design Notes","pathname":"/studio/design/workflow-editor-3.5-preview","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Studio"},{"label":"Design"}]},{"id":"GOvGinlS5NGG2kkuWH1t","title":"Activity Pickers","pathname":"/studio/design/activity-pickers-3.7-preview","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Studio"},{"label":"Design"}]},{"id":"KJOutobv5QOUcqL8Pk10","title":"Workflow Editor","pathname":"/studio/workflow-editor","siteSpaceId":"sitesp_AnEHc","description":"This section shows the various Elsa Studio customisation options available","breadcrumbs":[{"label":"Studio"}]},{"id":"krHerYOccrZ3xNzWIZ5Y","title":"UI Hints","pathname":"/studio/workflow-editor/ui-hints","siteSpaceId":"sitesp_AnEHc","description":"Source-backed guide to Elsa Studio UI hints in release 3.8.0, including default inference, built-in editors, option providers, and custom handlers.","breadcrumbs":[{"label":"Studio"},{"label":"Workflow Editor"}]},{"id":"Dmww7lAxYjhxsrgLhZg6","title":"Content Visualisers","pathname":"/studio/workflow-editor/content-visualisers-3.6-preview","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Studio"},{"label":"Workflow Editor"}]},{"id":"0FEP7I56pNr8FfbFt9yB","title":"Field Extensions","pathname":"/studio/workflow-editor/field-extensions","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Studio"},{"label":"Workflow Editor"}]},{"id":"aK7NygVZbCdUDxc1wEyr","title":"Localization","pathname":"/studio/localization","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Studio"}]},{"id":"NsQU3NTrzmAYXAD4QyJ0","title":"Alterations","pathname":"/features/alterations","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Features"}]},{"id":"CLTR8ITy5JJUvzeyIE7z","title":"Alteration Plans","pathname":"/features/alterations/alteration-plans","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Features"},{"label":"Alterations"}]},{"id":"E7mmHTXn4W9m3bkeoLma","title":"REST API","pathname":"/features/alterations/alteration-plans/rest-api","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Features"},{"label":"Alterations"},{"label":"Alteration Plans"}]},{"id":"iQUid3XbXZNpiAPsP6cf","title":"Applying Alterations","pathname":"/features/alterations/applying-alterations","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Features"},{"label":"Alterations"}]},{"id":"eHrd9h8nCsFzw77SCOWO","title":"REST API","pathname":"/features/alterations/applying-alterations/rest-api","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Features"},{"label":"Alterations"},{"label":"Applying Alterations"}]},{"id":"CvjkLqFxlO9doJcYvpc3","title":"Extensibility","pathname":"/features/alterations/applying-alterations/extensibility","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Features"},{"label":"Alterations"},{"label":"Applying Alterations"}]},{"id":"Y9qCBsz4eNaTCj06capc","title":"Logging Framework","pathname":"/features/logging-framework","siteSpaceId":"sitesp_AnEHc","description":"","breadcrumbs":[{"label":"Features"}]}]}