
Architecture Principle · 08 of 9
Event-Driven
Every state change publishes an event to the platform event bus. Subscribers add new behavior — workflows, alerts, integrations, analytics — without modifying the source module.
What this means
In practice.
Adding a new alert or workflow doesn't require changing the module that triggers it
Multiple subscribers can listen to the same event independently
Async event processing means slow subscribers don't block fast ones
Replay events for debugging or backfilling new subscribers
How it works
Under the hood.
Event taxonomy
Every business event has a name (sales.order.confirmed), payload schema, and emitting module.
Message bus
Events flow through BullMQ on Redis. Persistent, ordered, durable.
Subscriber registration
Workflows, automations, integrations, and notifications register interest in specific events.
Failure isolation
If one subscriber fails, others continue. Failed deliveries retried with exponential backoff.
Visual
Real-World Example
Real-world: New compliance alert without code change
Before
Compliance team needed alerts when exports above ₹10 Cr were filed — to validate FEMA paperwork.
After
Configured automation: subscribed to invoice.finalized event, filtered by type=export and amount > 10000000, action=send Slack alert. Live in 20 minutes. No code change, no deploy.

Ready to modernize your mill?
See Papyrus BPApp
in your mill.
Book a personalized demo. We'll walk through every module relevant to your operation — from Deckle optimization to GSTR-3B compliance.