The Cron app provides periodic workflow execution capabilities for Invopop. Subscribe any silo entry to a workflow with a specified interval, and Cron handles the scheduling and execution automatically. This replaces the need for apps to build their own polling and scheduling infrastructure.The primary use case is automating inbound data flows, such as periodically importing invoices from external systems. For example, the SW Sapien app uses Cron to schedule daily CFDI bulk imports from Mexico’s SAT.
Subscription-based scheduling: Subscribe silo entries to workflows with configurable intervals (hourly, daily, and more).
Automatic execution windows: Each scheduled job receives from and upto parameters defining the exact time range to process, so workflows always know which period they cover.
Centralized infrastructure: Leverages the Invopop workflow engine for error handling, retry logic, and monitoring instead of requiring each app to build its own scheduling.
Manual triggers: Unsubscribe and resubscribe to reset execution, or create one-off jobs directly for special cases.
Execution tracking: Maintains a history of executions per subscription to ensure proper interval management.
The following workflow actions will be available once you install and enable this app:
Subscribe
Register a silo entry for periodic workflow execution. Configure the target workflow and the execution interval (for example, daily or hourly). The subscription takes effect immediately and the first job is created at the next scheduled interval.
Unsubscribe
Remove a previously created subscription. The workflow will no longer execute periodically for the specified silo entry.
The Cron app actions are designed to be included as steps within your own workflows. Below is an example of a party workflow that subscribes a party to a periodic import process.
Subscribe party to periodic import
Subscribe a party to daily CFDI bulk imports. This workflow is intended to be executed once per party after initial registration. Replace the workflow_id with the ID of your import workflow.
Example subscribe party to CFDI import workflow
{ "name": "Subscribe party to CFDI import", "description": "Subscribe a party to periodic CFDI bulk import using the Cron app", "schema": "org/party", "steps": [ { "id": "2ab3c280-164e-11f1-a769-19319c292fdf", "name": "Subscribe to periodic execution", "provider": "cron.subscribe", "summary": "Hourly → SW Sapien Efisco bulk import CFDIs", "config": { "interval": "hourly", "workflow_id": "f907561b-81c2-4bd5-9199-95638ed60669" } }, { "id": "3a99bc90-164e-11f1-a769-19319c292fdf", "name": "Set State", "provider": "silo.state", "summary": "Set state to `registered`{.state .registered}", "config": { "state": "registered" } } ], "rescue": [ { "id": "d0e1f2a0-3c4d-11f0-d003-6c7d8e9f0a1b", "name": "Set State", "provider": "silo.state", "summary": "Set state to `error`{.state .error}", "config": { "state": "error" } } ]}
The example above uses a Mexico CFDI import workflow, but the Cron app is not country-specific. Use it with any workflow that benefits from periodic execution.