# Modelling

- [Introduction](https://docs.ecotone.tech/modelling/message-driven-php-introduction.md): Message Driven System with Domain Driven Design principles in PHP
- [Message Bus and CQRS](https://docs.ecotone.tech/modelling/command-handling.md): PHP Message Bus, CQRS, Command Event Query Handlers
- [CQRS Introduction - Commands](https://docs.ecotone.tech/modelling/command-handling/external-command-handlers.md): Commands CQRS PHP
- [Query Handling](https://docs.ecotone.tech/modelling/command-handling/external-command-handlers/query-handling.md): Query CQRS PHP
- [Event Handling](https://docs.ecotone.tech/modelling/command-handling/external-command-handlers/event-handling.md): Event CQRS PHP
- [Aggregate Introduction](https://docs.ecotone.tech/modelling/command-handling/state-stored-aggregate.md): DDD Aggregates PHP
- [Aggregate Command Handlers](https://docs.ecotone.tech/modelling/command-handling/state-stored-aggregate/aggregate-command-handlers.md): DDD PHP
- [Aggregate Query Handlers](https://docs.ecotone.tech/modelling/command-handling/state-stored-aggregate/aggregate-query-handlers.md): DDD PHP
- [Aggregate Event Handlers](https://docs.ecotone.tech/modelling/command-handling/state-stored-aggregate/aggregate-event-handlers.md): DDD PHP
- [Advanced Aggregate creation](https://docs.ecotone.tech/modelling/command-handling/state-stored-aggregate/advanced-aggregate-creation.md): DDD PHP
- [Repositories Introduction](https://docs.ecotone.tech/modelling/command-handling/repository.md): Repository PHP
- [Configure Repository](https://docs.ecotone.tech/modelling/command-handling/repository/configure-repository.md): Configuring custom Aggregate repositories in Ecotone PHP
- [Fetching/Storing Aggregates](https://docs.ecotone.tech/modelling/command-handling/repository/repository.md): Fetching and storing Aggregates with repositories in Ecotone PHP
- [Inbuilt Repositories](https://docs.ecotone.tech/modelling/command-handling/repository/inbuilt-repositories.md): Built-in Aggregate repositories for Doctrine ORM, Eloquent, and DBAL
- [Business Interface](https://docs.ecotone.tech/modelling/command-handling/business-interface.md): Business Interfaces for type-safe messaging in Ecotone PHP
- [Introduction](https://docs.ecotone.tech/modelling/command-handling/business-interface/introduction.md): Introduction to Business Interfaces in Ecotone PHP
- [Database Business Interface](https://docs.ecotone.tech/modelling/command-handling/business-interface/working-with-database.md): Database Business Interface for type-safe database access in PHP
- [Converting Parameters](https://docs.ecotone.tech/modelling/command-handling/business-interface/working-with-database/converting-parameters.md): Converting parameters in Database Business Interface queries
- [Converting Results](https://docs.ecotone.tech/modelling/command-handling/business-interface/working-with-database/converting-results.md): Converting query results in Database Business Interface
- [Saga Introduction](https://docs.ecotone.tech/modelling/command-handling/saga.md): Process Manager Saga PHP
- [Identifier Mapping](https://docs.ecotone.tech/modelling/command-handling/identifier-mapping.md): Mapping identifiers for Aggregate and Saga routing in Ecotone
- [Extending Messaging (Middlewares)](https://docs.ecotone.tech/modelling/extending-messaging-middlewares.md): Extending messaging with Interceptors and Middlewares in Ecotone PHP
- [Message Headers](https://docs.ecotone.tech/modelling/extending-messaging-middlewares/message-headers.md): Working with Message Headers and metadata in Ecotone PHP
- [Interceptors (Middlewares)](https://docs.ecotone.tech/modelling/extending-messaging-middlewares/interceptors.md): PHP Interceptors Middlewares
- [Additional Scenarios](https://docs.ecotone.tech/modelling/extending-messaging-middlewares/interceptors/additional-scenarios.md): Advanced Interceptor scenarios and configurations in Ecotone
- [Intercepting Asynchronous Endpoints](https://docs.ecotone.tech/modelling/extending-messaging-middlewares/intercepting-asynchronous-endpoints.md): Intercepting asynchronous message endpoints in Ecotone PHP
- [Extending Message Buses (Gateways)](https://docs.ecotone.tech/modelling/extending-messaging-middlewares/extending-message-buses-gateways.md): Extending Command, Event, and Query Buses with custom Gateways
- [Event Sourcing](https://docs.ecotone.tech/modelling/event-sourcing.md): Event Sourcing PHP
- [Installation](https://docs.ecotone.tech/modelling/event-sourcing/installation.md): Installing Event Sourcing support in Ecotone PHP
- [Event Sourcing Introduction](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction.md): Using Event Sourcing in PHP
- [Working with Event Streams](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/working-with-event-streams.md): Working with Event Streams in Ecotone PHP
- [Event Sourcing Aggregates](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/event-sourcing-aggregates.md): Event Sourcing Aggregates in Ecotone PHP
- [Working with Aggregates](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/event-sourcing-aggregates/working-with-aggregates.md): Working with Event Sourcing Aggregates in Ecotone PHP
- [Applying Events](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/event-sourcing-aggregates/applying-events.md): Applying events to rebuild Event Sourcing Aggregate state in PHP
- [Different ways to Record Events](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/event-sourcing-aggregates/different-ways-to-record-events.md): Different ways to record events in Event Sourcing Aggregates
- [Working with Metadata](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/working-with-metadata.md): Working with event metadata in Event Sourcing
- [Event versioning](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/event-versioning.md): Event versioning and upcasting for Event Sourcing in PHP
- [Event Stream Persistence](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/persistence-strategy.md): PHP Event Sourcing Persistence Strategy
- [Event Sourcing Repository](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/persistence-strategy/event-sourcing-repository.md): Configuring Event Sourcing repositories in Ecotone PHP
- [Making Stream immune to changes](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/persistence-strategy/making-stream-immune-to-changes.md): Making event streams immune to class and namespace changes
- [Snapshoting](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/persistence-strategy/snapshoting.md): PHP Event Sourcing Snapshoting
- [Persistence Strategies](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/persistence-strategy/persistence-strategies.md): Event stream persistence strategies in Ecotone PHP
- [Event Serialization and PII Data (GDPR)](https://docs.ecotone.tech/modelling/event-sourcing/event-sourcing-introduction/persistence-strategy/event-serialization-and-pii-data-gdpr.md): Event serialization and GDPR-compliant PII data handling
- [Projection Introduction](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections.md): PHP Event Sourcing Projections
- [Event Streams and Handlers](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/event-streams-and-handlers.md): PHP Event Sourcing Projection Streams and Event Handlers
- [Projections with Document Store](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/document-store-projection.md): PHP Event Sourcing Projections with Document Store
- [Execution Modes](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/execution-modes.md): PHP Event Sourcing Projection Execution Modes
- [Lifecycle Management](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/lifecycle-management.md): PHP Event Sourcing Projection Lifecycle and CLI
- [Projections with State](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/projections-with-state.md): PHP Event Sourcing Stateful Projections
- [Emitting Events](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/emitting-events.md): PHP Event Sourcing Projection Event Emission
- [Backfill and Rebuild](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/backfill-and-rebuild.md): PHP Event Sourcing Projection Backfill and Rebuild
- [Failure Handling](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/failure-handling.md): PHP Event Sourcing Projection Failure Handling and Recovery
- [Scaling and Advanced](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/scaling-and-advanced.md): PHP Event Sourcing Projection Scaling
- [Gap Detection and Consistency](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/gap-detection-and-consistency.md): PHP Event Sourcing Projection Gap Detection
- [Blue-Green Deployments](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/blue-green-deployments.md): PHP Event Sourcing Projection Blue-Green Deployments
- [Upgrading from V1 to V2](https://docs.ecotone.tech/modelling/event-sourcing/setting-up-projections/upgrading-from-v1.md): Upgrading from Projection V1 to ProjectionV2
- [Recovering, Tracing and Monitoring](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring.md): Recovering, tracing, and monitoring message-driven applications
- [Resiliency](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/resiliency.md): Production resilience with retries, dead letter, outbox, and deduplication
- [Retries](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/resiliency/retries.md): Configuring automatic message retry strategies in Ecotone PHP
- [Error Channel](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/resiliency/error-channel-and-dead-letter.md): Error channels and dead letter queues for failed message handling
- [Dbal Dead Letter](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/resiliency/error-channel-and-dead-letter/dbal-dead-letter.md): DBAL-based dead letter queue for storing and replaying failed messages
- [Final Failure Strategy](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/resiliency/final-failure-strategy.md): Final failure strategy when all message retries are exhausted
- [Idempotency (Deduplication)](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/resiliency/idempotent-consumer-deduplication.md): Idempotent consumer pattern for message deduplication in PHP
- [Resilient Sending](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/resiliency/resilient-sending.md): Resilient sending for guaranteed message delivery to async channels
- [Outbox Pattern](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/resiliency/outbox-pattern.md): Outbox pattern for atomic message publishing with database transactions
- [Concurrency Handling](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/resiliency/concurrency-handling.md): Handling concurrency with optimistic and pessimistic locking
- [Message Handling Isolation](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/message-handling-isolation.md): Message handling isolation for safe retries without side effects
- [Ecotone Pulse (Service Dashboard)](https://docs.ecotone.tech/modelling/recovering-tracing-and-monitoring/ecotone-pulse-service-dashboard.md): Ecotone Pulse service dashboard for monitoring message consumers
- [Asynchronous Handling and Scheduling](https://docs.ecotone.tech/modelling/asynchronous-handling.md): Asynchronous PHP
- [Asynchronous Message Handlers](https://docs.ecotone.tech/modelling/asynchronous-handling/asynchronous-message-handlers.md): Making message handlers asynchronous with a single attribute
- [Asynchronous Message Bus (Gateways)](https://docs.ecotone.tech/modelling/asynchronous-handling/asynchronous-message-bus-gateways.md): Asynchronous Message Bus Gateways for channel-wide async processing
- [Delaying Messages](https://docs.ecotone.tech/modelling/asynchronous-handling/delaying-messages.md): Delaying message delivery for scheduled processing
- [Time to Live](https://docs.ecotone.tech/modelling/asynchronous-handling/time-to-live.md): Time to live for automatic message expiration
- [Message Priority](https://docs.ecotone.tech/modelling/asynchronous-handling/message-priority.md): Message priority for controlling processing order
- [Scheduling](https://docs.ecotone.tech/modelling/asynchronous-handling/scheduling.md): Scheduling PHP
- [Dynamic Message Channels](https://docs.ecotone.tech/modelling/asynchronous-handling/dynamic-message-channels.md): Dynamic message channels for per-tenant routing and isolation
- [Distributed Bus and Microservices](https://docs.ecotone.tech/modelling/microservices-php.md): Implementing Microservices and Event Driven Architecture in PHP
- [Distributed Bus](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus.md): Distributed Bus for cross-service messaging in PHP
- [Distributed Bus Interface](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/distributed-bus-interface.md): Distributed Bus Interface for sending commands and events across services
- [Distributed Bus with Service Map](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/distributed-bus-with-service-map.md): Distributed Bus with Service Map for multi-broker microservice communication
- [Configuration](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/distributed-bus-with-service-map/configuration.md): Configuring Distributed Bus with Service Map
- [Sharing Events with Streaming Channels](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/distributed-bus-with-service-map/sharing-events-with-streaming-channels.md): Sharing events between services with streaming channels
- [Custom Features](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/distributed-bus-with-service-map/custom-features.md): Custom features for Distributed Bus with Service Map
- [Shared Service Map](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/distributed-bus-with-service-map/shared-service-map.md): Shared Service Map for centralized service topology
- [Non-Ecotone Application integration](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/distributed-bus-with-service-map/non-ecotone-application-integration.md): Integrating with other Languages and Frameworks
- [Testing](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/distributed-bus-with-service-map/testing.md): Testing Distributed Bus and cross-service messaging
- [AMQP Distributed Bus (Legacy)](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/amqp-distributed-bus-rabbitmq.md): AMQP Distributed Bus with RabbitMQ for legacy inter-service communication
- [Configuration](https://docs.ecotone.tech/modelling/microservices-php/distributed-bus/amqp-distributed-bus-rabbitmq/configuration.md): Configuring AMQP Distributed Bus with RabbitMQ
- [Message Consumer](https://docs.ecotone.tech/modelling/microservices-php/message-consumer.md): Message Consumer for consuming from external message brokers
- [Message Publisher](https://docs.ecotone.tech/modelling/microservices-php/message-publisher.md): Message Publisher for publishing to external message brokers
- [Business Workflows](https://docs.ecotone.tech/modelling/business-workflows.md): Building business workflows with Sagas, Orchestrators, and Handler Chaining in PHP
- [Connecting Handlers with Channels](https://docs.ecotone.tech/modelling/business-workflows/connecting-handlers-with-channels.md): Learn how to connect message handlers using channels to build workflows
- [Sagas: Workflows That Remember](https://docs.ecotone.tech/modelling/business-workflows/sagas.md): Learn how to build long-running workflows that remember state using Sagas
- [Orchestrators: Declarative Workflow Automation](https://docs.ecotone.tech/modelling/business-workflows/orchestrators.md): Learn how to build predefined and dynamic workflows using Orchestrator
- [Handling Failures](https://docs.ecotone.tech/modelling/business-workflows/handling-failures.md): Handling Failures and Exceptions in Sagas and Process Managers
- [Migrations / Storage](https://docs.ecotone.tech/modelling/migrations-storage.md): Database migrations and storage management in Ecotone PHP
- [Testing Support](https://docs.ecotone.tech/modelling/testing-support.md): Testing message-driven applications with Ecotone PHP
- [Testing Messaging](https://docs.ecotone.tech/modelling/testing-support/testing-messaging.md): Testing Messaging architecture in PHP
- [Testing Aggregates and Sagas with Message Flows](https://docs.ecotone.tech/modelling/testing-support/testing-aggregates-and-sagas-with-message-flows.md): Testing Aggregate, Saga in PHP
- [Testing Event Sourcing Applications](https://docs.ecotone.tech/modelling/testing-support/testing-event-sourcing-applications.md): Testing Event Sourcing applications in PHP
- [Testing Asynchronous Messaging](https://docs.ecotone.tech/modelling/testing-support/testing-asynchronous-messaging.md): Testing asynchronous communication in PHP


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ecotone.tech/modelling.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
