CRM migration
Field-level mapping, validation, and rollback between Timefold and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Timefold
Source
Twenty CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Timefold and Twenty CRM.
Complexity
BStandard
Timeline
72–96 hours
Overview
Timefold is an AI-powered scheduling optimization platform built around constraint-satisfaction problem definitions: planning entities (Shifts, Visits, Vehicles), planning variables (employee-to-shift assignments, visit-to-vehicle routes), problem facts, and scored solutions. It has no native CRM objects — contacts, accounts, and deals do not exist in Timefold's data model. Twenty CRM is an open-source CRM with standard People, Companies, and Opportunities objects, plus unlimited custom objects for anything outside that core. There is no native scheduling model in Twenty, so Timefold's entire planning domain (entities, constraints, assignments, scores) migrates as a set of custom objects and custom fields on Twenty's standard records. FlitStack AI sequences the migration by first creating the custom object schema in Twenty, then exporting Timefold problem data via its REST API, transforming the constraint and entity model into Twenty-compatible JSON/CSV, and loading through Twenty's API or CSV import. Constraint configurations do not auto-enforce in Twenty — they become reference data that your team rebuilds using Twenty's workflow builder. We preserve Timefold's internal IDs on all migrated records for traceability and run delta-pickup during cutover so any new or modified planning entities land in Twenty before go-live.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Timefold object lands in Twenty CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Timefold
Planning Entity: Shift
Twenty CRM
Custom Object: Shift
1:1Timefold's Shift entity (employee-to-shift assignments, start/end times, location) migrates as a Twenty custom object with fields for shiftName, startTime, endTime, locationId, and assignedEmployee. Twenty's custom object creation via Settings → Data Model must happen before CSV import or API load.
Timefold
Planning Entity: Visit
Twenty CRM
Custom Object: Visit
1:1Timefold Field Service Routing's Visit entity (customer location, time window, required skills, duration) maps to a Twenty custom object. The visit's time window dates become startDate and endDate fields; required skills become a multi-select field or linked Skills custom object.
Timefold
Planning Entity: Vehicle
Twenty CRM
Custom Object: Vehicle
1:1Timefold routing models' Vehicle entity (capacity, skills, startLocation) maps to a Twenty custom object. Vehicle capacity and skill requirements become number and multi-select fields respectively. Routes assigned to this vehicle in Timefold's solution become linked Route records. If your routing model includes multi-day routes with intermediate stops, the route hierarchy is preserved as nested relation fields on the Vehicle record.
Timefold
Planning Entity: Employee
Twenty CRM
People
1:1When Timefold's employee roster needs to link to a CRM contact model, the Employee entity maps to Twenty's People object. Standard fields: name, email, phone, jobTitle. Employee skills stored in Timefold become a multi-select custom field on the People record.
Timefold
Planning Entity: Task (generic work item)
Twenty CRM
Tasks
1:1Timefold planning tasks (the work items being assigned to employees/shifts) map to Twenty's standard Tasks object. The Twenty Tasks object supports dueDate, assignee (linked to People), status, and body — matching the structure of a generic planning task. Task dependencies from Timefold become predecessor-link custom fields on the Twenty Tasks record.
Timefold
Problem Fact: Location
Twenty CRM
Companies
1:1Timefold location records (addresses, coordinates for routing) can map to Twenty Companies for physical service locations. The Company object captures address, city, country, and domain. Locations used in Visit routing become Company records with address fields populated from Timefold's location data. GPS coordinates from Timefold are stored in a custom lat/long field on the Company record for map integration.
Timefold
Planning Variable: Shift-to-Employee assignment
Twenty CRM
Custom Field on Shift
1:1Timefold's planning variable assigning an Employee to a Shift becomes a relation field (assignedEmployee) on the Shift custom object in Twenty. This is a lookup to the People record representing the employee, resolving the foreign key by email match. If an employee record does not yet exist in Twenty, FlitStack creates a stub People record to preserve the assignment relationship.
Timefold
Planning Variable: Visit-to-Vehicle assignment
Twenty CRM
Custom Field on Visit
1:1Timefold's vehicle assignment for a Visit (which vehicle serves which visit) becomes a VehicleId lookup field on the Visit custom object. The vehicle must exist as a Vehicle custom object record before the Visit assignment can reference it. This ensures referential integrity during import and prevents orphan lookups on the Twenty side.
Timefold
Score / Optimization Output
Twenty CRM
Custom Field on Planning Entity
1:1Timefold's score output (e.g., '0hard/-257medium/-6119520soft') has no native equivalent in Twenty. We store it as a text field (Score__c) on each planning entity for historical reference. Teams using score to evaluate schedule quality see it as metadata on the entity record. Score__c enables audit and compliance review but requires spreadsheet export for trend analysis.
Timefold
Constraint Configuration
Twenty CRM
Custom Object: ConstraintReference
1:1Timefold's constraint definitions (hard rules like skill matching, soft rules like travel time minimization) cannot auto-enforce in Twenty. We export them as structured JSON into a ConstraintReference custom object — name, type (hard/medium/soft), definition text, and weight — serving as a manual-rebuild guide for Twenty workflow configuration.
Timefold
Planning Solution / Schedule Run
Twenty CRM
Custom Object: ScheduleRun
1:1Each Timefold optimization run (solving a planning problem to produce a schedule) maps to a ScheduleRun custom object in Twenty. Fields: runDate, modelName, entityCount, scoreValue, and a link to the generated Shift/Visit/Vehicle assignments. This gives an audit trail of what the optimizer produced historically.
Timefold
Custom Entity Class
Twenty CRM
Custom Object
1:1Timefold domain models with custom entity classes (beyond Shift/Visit/Vehicle) map 1:1 to Twenty custom objects. Each entity property becomes a field in Twenty's data model. Relationships between custom entities in Timefold become relation fields or junction objects in Twenty based on cardinality.
| Timefold | Twenty CRM | Compatibility | |
|---|---|---|---|
| Planning Entity: Shift | Custom Object: Shift1:1 | Fully supported | |
| Planning Entity: Visit | Custom Object: Visit1:1 | Fully supported | |
| Planning Entity: Vehicle | Custom Object: Vehicle1:1 | Fully supported | |
| Planning Entity: Employee | People1:1 | Fully supported | |
| Planning Entity: Task (generic work item) | Tasks1:1 | Fully supported | |
| Problem Fact: Location | Companies1:1 | Fully supported | |
| Planning Variable: Shift-to-Employee assignment | Custom Field on Shift1:1 | Fully supported | |
| Planning Variable: Visit-to-Vehicle assignment | Custom Field on Visit1:1 | Fully supported | |
| Score / Optimization Output | Custom Field on Planning Entity1:1 | Fully supported | |
| Constraint Configuration | Custom Object: ConstraintReference1:1 | Fully supported | |
| Planning Solution / Schedule Run | Custom Object: ScheduleRun1:1 | Fully supported | |
| Custom Entity Class | Custom Object1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
Timefold gotchas
Score DRL to Constraint Streams migration is non-trivial
Hard constraint enforcement failures reported in production
Solver migration bugs are upstream-dependent
Neighborhoods API is preview-only and subject to breaking changes
Commercial tier features are edition-gated without feature-flag documentation
Twenty CRM gotchas
Import order is enforced and critical
Export limited to 20,000 records and visible columns only
Soft-deleted records count toward uniqueness and trigger restores
API rate limits cap at 200 req/min on Organization tier
No native email sequences — follow-up cadences require external tools
Pair-specific challenges
Migration approach
Audit Timefold domain model and export via API
FlitStack connects to Timefold's REST API using the provided API key and enumerates all planning entity classes, problem facts, constraint definitions, and historical schedule runs. We capture the full constraint-provider JSON, entity schemas, and relationship graph. This audit produces the migration blueprint: which entities map to standard Twenty objects, which require custom objects, and which Timefold concepts (constraint scoring) have no Twenty equivalent and will become reference data.
Build Twenty custom object schema before data arrives
Twenty requires custom objects and fields to exist before CSV import or API load. FlitStack creates the Shift, Visit, Vehicle, ScheduleRun, and ConstraintReference custom objects in Twenty via Settings → Data Model, adding all required fields (StartTime__c, AssignedEmployee__c, TimeWindowStart__c, Score__c, etc.). We configure relation fields at this stage so foreign-key lookups are ready when entity records land. Field types are chosen to match the source data semantics — datetime for timestamps, number for scores, multi-select for skills arrays.
Export Timefold entity data and resolve owner/employee matches
We export all planning entity records (Shifts, Visits, Vehicles, custom entities) from Timefold via its REST API. For entities with assignedEmployee or assignedVehicle planning variables, we match the referenced employee/vehicle records by identifier. Any unresolved references are flagged and escalated — typically because an employee was deleted from Timefold but still referenced in a historical schedule. The export is scoped to read-only access so your team can continue using Timefold normally while migration proceeds.
Run sample migration with field-level diff on planning entities
A representative slice of Timefold records — typically 100–500 entities spanning Shifts, Visits, Vehicles, and constraint configurations — migrates to Twenty first. FlitStack generates a field-level diff between the source JSON and the Twenty custom object records, verifying that AssignedEmployee__c resolves to the correct People record, TimeWindowStart__c matches the original visit time window, and Score__c captures the full Timefold score string.
Cut over with delta-pickup for in-flight schedule runs
The full migration commits all Timefold entities to Twenty. A delta-pickup window (24–48 hours) captures any new Shifts, Visits, or constraint configurations created in Timefold during the cutover. FlitStack's audit log records every operation, and one-click rollback is available if Twenty's custom object schema has issues that surface post-migration. Constraint definitions are delivered as a ConstraintReference rebuild guide for the Twenty admin team.
Platform deep dives
Timefold
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Timefold and Twenty CRM.
Object compatibility
1 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Timefold: Not publicly documented on the Timefold Platform REST API.
Data volume sensitivity
Timefold exposes a bulk API — large-volume migrations stream efficiently.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Timefold to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Timefold to Twenty CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Timefold
Other ways to arrive at Twenty CRM
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.