CRM migration
Field-level mapping, validation, and rollback between Court Clerk and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Court Clerk
Source
Odoo CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Court Clerk and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Court Clerk (Tyler Technologies' Clerk Edition) structures data around legal cases — case numbers, filing parties, appearances, judgments, and attorney assignments — with no commercial CRM analogue. Odoo CRM structures data around opportunities and sales pipelines using crm.lead, crm.lead.team, and res.partner. FlitStack AI translates Court Clerk cases into Odoo Opportunities, Court Clerk parties into Odoo Partners and Contacts, and Court Clerk filing data into custom fields on the opportunity record. Attorney assignments resolve by email match against Odoo user records. Judges, court jurisdictions, and filing types that have no Odoo standard field become custom fields (x_court_jurisdiction, x_filing_type, x_judge_name) that your team configures post-migration. Odoo's XML-RPC API (jsonrpc/xmlrpc/2/database endpoint) handles the data load; court documents and evidence files re-upload as Odoo attachments. Workflows and automation rules from Court Clerk do not exist as transferable logic in that system and must be documented for manual rebuild in Odoo's Studio or via custom Python modules. The migration delivers audit-logged inserts with a delta-pickup window so any case updates made during cutover are captured before final reconciliation.
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 Court Clerk object lands in Odoo CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Court Clerk
Case
Odoo CRM
crm.lead (Opportunity)
1:1Court Clerk case records map directly to Odoo crm.lead as Opportunities. The case_number field becomes the Opportunity name; case_type determines the pipeline or custom field value assigned. The original case_number from Court Clerk is preserved as a custom field x_court_case_id on the crm.lead for historical traceability after migration completes.
Court Clerk
Case
Odoo CRM
sale.order
1:1If Court Clerk records include billable fees or court costs, those amounts map to Odoo sale.order lines during migration. Fee line items become order products; total assessed costs map to sale.order.amount_total. This billing migration is opt-in and depends on case-type configuration in your Odoo environment.
Court Clerk
Party
Odoo CRM
res.partner
1:1Court Clerk party records including plaintiffs, defendants, witnesses, and attorneys map to Odoo res.partner records. The party role (plaintiff, defendant, witness, attorney) is stored as a custom pick-list field x_party_role on the partner record. Multiple party roles per case require junction records via the crm.lead.res_partner_rel table.
Court Clerk
Attorney
Odoo CRM
res.users
1:1Court Clerk attorney records resolve by email match against Odoo res.users table. Attorneys with matching email addresses receive user_id assignment on their linked crm.lead records. Unmatched attorneys become res.partner records with partner_type = 'attorney' rather than system users. Your administrator confirms attorney-user assignments before migration runs.
Court Clerk
Judge
Odoo CRM
res.partner (custom)
1:1Court Clerk judge_name field has no Odoo standard field equivalent. The judge is stored as a res.partner record with partner_type = 'judge'. A custom field x_judge_id on crm.lead acts as a Many2one pointer to the judge's partner record for reporting and filtering purposes.
Court Clerk
Filing
Odoo CRM
ir.attachment
1:1Court Clerk filing documents including complaints, motions, and orders export as PDFs and re-upload to Odoo as ir.attachment records linked to the related crm.lead. File naming convention is {case_number}_{filing_type}_{date}.pdf. Inline images extracted from scanned filings are rehosted individually within Odoo attachments.
Court Clerk
Appearance
Odoo CRM
mail.message
1:1Court Clerk appearance records including scheduled hearings, hearing dates, and outcomes map to Odoo mail.message entries on the crm.lead with message_type = 'notification'. The next_hearing_date is stored as a custom datetime field x_next_hearing_date on the opportunity record for calendar integration.
Court Clerk
Judgment
Odoo CRM
crm.lead (stage + custom fields)
1:1Court Clerk judgment outcomes map to the Odoo Opportunity stage plus custom fields including x_judgment_date, x_judgment_amount, and x_disposition tracking granted, denied, or remanded dispositions. Disposition pick-list values require value-by-value mapping against your specific Odoo stage configuration.
Court Clerk
Bond / Financial
Odoo CRM
account.move (optional)
1:1Bond amounts and financial assessments in Court Clerk map to custom numeric fields on crm.lead (x_bond_amount, x_assessed_costs). If fee invoicing is active in your Odoo configuration, these values generate Odoo account.move records via sale.order conversion after the initial migration completes.
Court Clerk
Court Jurisdiction
Odoo CRM
crm.lead (custom field)
1:1Court Clerk court_jurisdiction values (circuit, district, municipal, appellate, supreme) have no Odoo standard field. We create x_court_jurisdiction as a custom pick-list on crm.lead with the source jurisdiction values preserved exactly as exported from Court Clerk for accurate historical representation.
Court Clerk
Case Status
Odoo CRM
crm.stage
1:1Court Clerk case status values (filed, active, pending, closed, appealed) map to Odoo crm.stage names via value-mapping. Each source status is mapped to the most appropriate Odoo stage in your configured pipeline. Probability percentages are re-applied per stage in Odoo settings after migration completes.
Court Clerk
Case Type
Odoo CRM
crm.lead (custom field)
1:1Court Clerk case_type values (civil, criminal, family, probate, traffic) map as a custom pick-list x_case_type on crm.lead. If your Odoo setup uses separate pipelines per case type, case_type also determines the crm.team assignment during migration for appropriate routing and team-based visibility.
| Court Clerk | Odoo CRM | Compatibility | |
|---|---|---|---|
| Case | crm.lead (Opportunity)1:1 | Fully supported | |
| Case | sale.order1:1 | Fully supported | |
| Party | res.partner1:1 | Fully supported | |
| Attorney | res.users1:1 | Fully supported | |
| Judge | res.partner (custom)1:1 | Fully supported | |
| Filing | ir.attachment1:1 | Fully supported | |
| Appearance | mail.message1:1 | Fully supported | |
| Judgment | crm.lead (stage + custom fields)1:1 | Fully supported | |
| Bond / Financial | account.move (optional)1:1 | Fully supported | |
| Court Jurisdiction | crm.lead (custom field)1:1 | Fully supported | |
| Case Status | crm.stage1:1 | Fully supported | |
| Case Type | crm.lead (custom field)1: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.
Court Clerk gotchas
County-specific case numbering schemes break migrations
Data dump from legacy Rockware is non-standard
Tyler Technologies Clerk Edition has no public bulk export API
Bond exoneration does not auto-update case status
Odoo CRM gotchas
Odoo.sh version gating blocks assisted migrations from trial
Enterprise modules fail to install on Community after database restore
Custom module view inheritance breaks between Odoo major versions
Custom fields risk losing their application context on Community
API access for Community is gated behind the Custom Plan
Pair-specific challenges
Migration approach
Extract Court Clerk data via Tyler export or direct DB query
FlitStack AI connects to Court Clerk's Tyler Technologies export endpoint or runs a direct PostgreSQL/MySQL query against the Clerk Edition database to extract case records, party records, filing metadata, appearance schedules, and judgment data. We validate foreign-key integrity across case-party, case-filing, and case-appearance tables before writing the export. Any null foreign keys (orphaned parties, missing attorneys) surface in a pre-migration data quality report. Court Clerk remains fully operational during this phase — we use scoped read access only.
Design Odoo custom field schema and pre-create fields
Based on the Court Clerk data audit, FlitStack delivers a field-creation checklist specifying every custom field needed on crm.lead (x_case_type, x_court_jurisdiction, x_judge_partner_id, x_bond_amount, x_next_hearing_date, x_filing_type, x_disposition, x_appeal_status) and res.partner (x_party_role, x_judge_id). Your Odoo admin creates these in Settings > Technical > Fields before migration runs. Attorney and judge res.partner records are pre-created in bulk using the Court Clerk attorney/judge export. Case-number normalization rules are confirmed against your court's docket format.
Resolve attorneys by email match against Odoo users
Attorney email addresses from Court Clerk are matched against Odoo res.users by email field. Matched records assign user_id on the corresponding crm.lead. Unmatched attorneys are flagged in a resolution report — your admin either invites them as Odoo users first or accepts that their records land as res.partner attorney contacts without system-user privileges. Judge records are always created as res.partner (partner_type = 'judge') since judges do not use Odoo as system users.
Run a sample migration with field-level diff
A representative slice migrates first — typically 100–300 case records spanning all case types, jurisdiction tiers, and party-role combinations. FlitStack generates a field-level diff comparing source Court Clerk values against Odoo crm.lead field values so you can verify case-type mapping, jurisdiction field population, judge resolution, attorney assignment, and appearance-to-mail-message translation before the full run commits. You sign off on the sample before cutover proceeds.
Execute full migration with delta-pickup window
The full Court Clerk dataset migrates to Odoo. A delta-pickup window (typically 24–48 hours) captures any cases, parties, or appearances modified in Court Clerk during the cutover window. FlitStack logs every operation to an audit trail (crm.lead message_ids, attachment create_date) and provides a reconciliation report comparing Court Clerk record counts against Odoo imported record counts. One-click rollback reverts the Odoo database to pre-migration state if reconciliation fails.
Platform deep dives
Court Clerk
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 of 8 objects need a manual workaround.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Court Clerk and Odoo CRM.
Object compatibility
1 of 8 objects need a manual workaround.
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
Court Clerk: Not publicly documented for any major court CMS — confirmed per-jurisdiction during scoping..
Data volume sensitivity
Court Clerk 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 Court Clerk to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Court Clerk to Odoo 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 Court Clerk
Other ways to arrive at Odoo 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.