Files
twenty/packages
martmull cc9c6ad0ea Replace last-contact backfill with cursor-paginated per-record backfills (#23582)
## What

Replaces the single-pass last-contact backfill in the `last-contact` app
with three independent cursor-paginated backfills, one per object:

- `backfill-people-last-contact`
- `backfill-companies-last-contact`
- `backfill-opportunities-last-contact`

The post-install `backfill-last-contact` function now just dispatches
the three by posting to their own HTTP routes.

## How it works

Each backfill function:
1. Selects the first 20 records after the given cursor.
2. Computes the last-contact columns for each record, one by one, from
raw message and calendar interactions (people from their own
interactions, companies from the most recent contact of their people,
opportunities from their point of contact).
3. Updates each record individually.
4. Sleeps briefly, then re-triggers itself with the next cursor until
there are no more records.

Because every batch computes from raw interaction data, the three
backfills are order-independent and can run concurrently.

## Why

The previous backfill loaded everything and fired updates in bursts,
which hit hosted API rate limiting on large workspaces. Spreading
updates 20 records at a time with a pause between pages keeps the load
under the limit.

This is a temporary fix until the `enqueueJob` utility handles
throttling natively.

## Notes

- App version bumped to 1.1.4 so the upgrade hook re-runs on existing
installs.
- No tests added, per the temporary nature of the change.
- Typecheck and lint pass.

---
_Generated by [Claude
Code](https://claude.ai/code/session_01GxPKyuxZnx5oyUap3wcBTb)_

<!-- This is an auto-generated description by cubic. -->
<a
href="https://cubic.dev/pr/twentyhq/twenty/pull/23582?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>
<!-- End of auto-generated description by cubic. -->
2026-07-31 10:55:02 +00:00
..
2026-07-31 11:15:28 +02:00