How Automatic Sync Works

Background sync every 15 minutes, what gets synced, orphan detection, and manual sync trigger

RPA Watch automatically syncs data from your connected RPA tools every 15 minutes. This article explains the sync architecture, what happens during each cycle, and how to trigger syncs manually.

Sync Schedule

- Frequency: Every 15 minutes

- First sync: Runs immediately when the server starts

- Scope: All accounts with a configured RPA tool and an active license

Only accounts that meet all of these criteria are synced:

1. The account is active

2. The parent tenant has an active license (trial or paid)

3. The account has RPA credentials configured (Robomotion token or UiPath credentials)

What Happens During a Sync

Each account sync runs the following steps in order:

1. Process Sync

- Fetches all processes from the RPA provider

- New processes are created in RPA Watch

- Existing processes are updated with the latest metadata

- Orphaned processes (present in RPA Watch but no longer in the provider) are soft-deleted

2. Robot Sync

- Fetches all robots/machines from the provider

- Creates, updates, or soft-deletes robots using the same logic as processes

3. Job Sync

- Fetches recent job executions from the provider

- Creates new jobs for jobs not yet in RPA Watch

- Updates existing jobs if the job status has changed (e.g., running → success)

- Links each job to its process (by external flow ID)

- Calculates duration from start/end timestamps

4. Schedule Sync

- Fetches schedules from the provider

- Creates, updates, or soft-deletes schedules

Orphan Detection

When an entity (process, robot, or schedule) exists in RPA Watch but is no longer returned by the RPA provider API, it is considered an orphan.

Orphans are soft-deleted — they are marked with a deleted_at timestamp but not permanently removed. This prevents data loss if the provider API is temporarily unavailable or if access permissions change.

Soft-deleted entities:

- Do not appear in the main list views

- Their historical job data is preserved

- Can be restored if the entity reappears in a future sync

Manual Sync

You can trigger a sync at any time without waiting for the 15-minute cycle:

1. Go to Processes in the sidebar

2. Click the Sync button in the top-right corner

3. A sync job is dispatched for your current account

4. Results appear within seconds

The manual sync runs the same process as the automatic sync — there is no difference in behavior.

Job Sync Window

- Robomotion: Syncs jobs from all time (paginated)

- UiPath: Syncs jobs from the last 24 hours by default

This means for UiPath integrations, the first sync will only capture recent jobs. Historical jobs older than 24 hours will not be imported.

Sync Status & History

After each sync, the system records:

- Number of items synced (processes, robots, jobs, schedules)

- Number of items updated or soft-deleted

- Any errors encountered during sync

You can view sync history from the Job History page in the sidebar.

Concurrency & Deduplication

- Each account sync runs independently

- Up to 5 account syncs can run in parallel

- Duplicate sync jobs for the same account are automatically deduplicated — if a sync is already in progress, a new request is silently ignored

Error Handling

Sync errors are handled gracefully:

- If one entity fails to sync, the remaining entities still sync

- Configuration errors (wrong credentials, expired tokens) are logged but don't crash the sync

- Network timeouts are retried on the next cycle

- Each sync step is independent — a failure in robot sync doesn't block job sync

Caching

To improve performance and reduce API calls:

- Process and robot lists are cached for 5 minutes

- Cache is invalidated at the start of each sync to ensure fresh data

- The cache is per-account to prevent cross-account data leakage