Event Streaming
Event Streaming was a Frappe feature that synchronized document changes between multiple Frappe sites. It allowed one site to publish document events while another site consumed those events to keep selected DocTypes synchronized without requiring custom integrations for every record type.
Important
Event Streaming is no longer a maintained core feature in Frappe version 15 and later. For new integrations, Frappe recommends using REST APIs, Webhooks, Background Jobs, or custom integration applications.
How Event Streaming Worked
Event Streaming followed a producer-consumer architecture where one Frappe site published document changes and another site received and processed those updates.
The workflow typically looked like this:
- A source site was configured as the Event Producer.
- A destination site was configured as the Event Consumer.
- Whenever selected documents were created or updated, an event was recorded.
- The consumer site retrieved those events.
- The corresponding records were created or updated on the destination site.
This approach was commonly used for synchronizing master data, transactional records, or custom DocTypes between multiple Frappe installations.
Support Status in Version 15 and Later
Beginning with Frappe version 15, Event Streaming is no longer supported as a maintained framework feature.
In Frappe version 14, the functionality existed inside the framework under:
frappe/event_streaming
Version 15 introduced a removal patch that deleted the Event Streaming module and its associated DocTypes, including:
- Event Producer
- Event Consumer
- Event Update Log
- Related mapping DocTypes
As a result, new projects should not rely on Event Streaming as part of the framework.
Separate Event Streaming Application
After its removal from the framework, Event Streaming became a standalone application.
However, the project is no longer actively maintained.
The repository:
- Was archived by the Frappe team.
- Became read-only on December 6, 2024.
- Has no official releases.
- Receives no active maintenance.
Organizations choosing to use the archived application should be prepared to maintain and test it independently.
Recommended Alternatives
For modern integrations, Frappe recommends using supported integration mechanisms instead of Event Streaming.
REST API
Use the REST API when applications need to exchange data through well-defined endpoints. This approach provides complete control over authentication, validation, and data flow.
Webhooks
Webhooks automatically notify external systems whenever selected document events occur, making them suitable for real-time integrations.
Background Jobs
Background jobs are useful for synchronization tasks that require retries, scheduling, logging, or long-running processing without blocking user requests.
Custom Integration Applications
For complex business processes, a dedicated integration application provides greater flexibility for implementing:
- Custom field mapping
- Conflict resolution
- Business validations
- Error handling
- Retry mechanisms
Implementation Considerations
Avoid designing new integrations around Event Streaming when working with Frappe version 15 or later.
Modern integration architectures built with APIs, Webhooks, and Background Jobs provide:
- Better maintainability
- Clear ownership of synchronization logic
- Reliable retry mechanisms
- Improved error handling
- Greater flexibility for future enhancements
Migration Guidance
If you currently rely on Event Streaming in older Frappe installations, consider planning a migration strategy before upgrading to newer framework versions.
A migration may include:
- Replacing Event Streaming with REST API integrations.
- Using Webhooks for event notifications.
- Moving synchronization logic into Background Jobs.
- Building a dedicated integration app for business-specific workflows.
Best Practice
For all new Frappe and ERPNext implementations, use supported integration technologies such as REST APIs, Webhooks, Background Jobs, and custom integration apps instead of Event Streaming. These approaches provide long-term compatibility, better reliability, and easier maintenance across framework upgrades.