Taroworks to CommCare Transition Guide

Taroworks to CommCare Transition Guide

Many organizations adopt TaroWorks because they already use Salesforce and want a mobile data collection tool that integrates directly with their CRM. However, as field programs grow, teams encounter challenges that come from TaroWorks being tightly coupled to the Salesforce ecosystem.

Special thanks to GiveDirectly for sharing an open-sourced TaroWorks-to-CommCare migration tool that connects to your Salesforce org, reads TaroWorks form metadata, and generates a CommCare-compatible XForm.

Why Transition from TaroWorks to CommCare?

Many organizations adopt TaroWorks because they already run their programs on Salesforce and want mobile data collection that feeds directly into their CRM. However, as field operations scale beyond simple data capture, teams encounter challenges inherent to TaroWorks' architecture as a Salesforce managed package. Every aspect of configuration, reporting, and user management requires Salesforce expertise, and extending workflows means building Salesforce automations (Flows, Process Builder) alongside TaroWorks Jobs — two systems to maintain in parallel. Scaling to more field workers means more Salesforce licenses, and offline data availability depends on Salesforce's sync configuration and drilldown setup rather than a purpose-built mobile architecture.

Organizations switch to CommCare to consolidate their field operations into a single, purpose-built platform. They look for native case management that works fully offline, form logic that program staff can build and modify without JavaScript or Salesforce admin skills, and a cost model that scales with their program rather than their CRM seat count.

Here is a summary of the common challenges with TaroWorks and the benefits organizations gain by switching to CommCare:

Feature

TaroWorks

CommCare

Platform dependency

Runs as a managed package inside Salesforce. Requires an active Salesforce license for every aspect of configuration, reporting, and administration.

Standalone platform purpose-built for mobile data collection and case management. No external CRM dependency.

Data architecture

Data flows into Salesforce objects. Tracking individuals across visits requires configuring Salesforce "drilldowns" and maintaining complex object relationships.

Native case management: register once, update across visits. Case history is automatically available offline on the device.

Form logic

Calculations and validations are written in JavaScript. Skip conditions are configured through the TaroWorks UI but have limited expressiveness.

XPath-based logic with a no-code Form Builder. Skip patterns, validations, and calculations are built visually or with simple expressions.

Offline capability

Syncs through Salesforce Mobile. Offline data availability depends on Salesforce's sync configuration and drilldown setup.

Purpose-built offline-first architecture. Full case lists, form logic, and multimedia available without connectivity.

Cost

Requires Salesforce platform licensing + TaroWorks subscription. Scaling to more users means more Salesforce seats.

Self-contained pricing. No third-party license required.

Workflow complexity

Building multi-step workflows requires Salesforce automations (Flows, Process Builder) alongside TaroWorks Jobs. Two systems to maintain.

Workflows are built entirely within CommCare using modules, forms, and case management. One system.

TaroWorks Transition Case Study: GiveDirectly

In this blog, read about why the organization GiveDirectly made the decision to switch from TaroWorks to CommCare to support their cash transfer work.

 

Step-by-Step Instructions

This guide provides step-by-step instructions to help organizations easily transition from TaroWorks to CommCare on their own.

1. Prepare for your Transition

Before you begin, audit your existing TaroWorks setup:

  • Inventory your Jobs and Forms: List all active TaroWorks Jobs and the Surveys (forms) they reference. Note which Salesforce objects each Job maps to via drilldowns.

  • Document your drilldown hierarchy: TaroWorks Jobs push Salesforce records to the mobile device via a "drilldown" -- a parent-child chain of Salesforce objects. These will become your CommCare case types and case relationships.

  • Identify field mappings: Each TaroWorks form has Question Mappings that write collected data back to Salesforce fields. Document these -- they will become CommCare case property updates.

  • Note JavaScript logic: TaroWorks uses JavaScript for calculations and validations. These must be rewritten as XPath expressions in CommCare. The GiveDirectly migration tool can auto-translate many common patterns, but complex JS (loops, array operations, self-references) will need manual rewriting.

  • Plan your Salesforce data export: If you need to bring historical data into CommCare, plan your SOQL queries or Salesforce Data Export now.


2. Re-Build Form(s) in CommCare

Option 1: Recreate your forms Manually

form builder video.mov
Check out this video on how to manually create a form on CommCare using the form builder:

Remember: For any multiple choice questions within your application, ensure that the value in the cell corresponds to the "choice value" in CommCare.

Option 2: Use the Automated Migration Tool

GiveDirectly has open-sourced a TaroWorks-to-CommCare migration tool that connects to your Salesforce org, reads TaroWorks form metadata, and generates a CommCare-compatible XForm.

What the tool does:

  • Connects to Salesforce via JWT authentication

  • Queries TaroWorks metadata (Jobs, Forms, Questions, Options, Skip Conditions, Field Mappings)

  • Translates question types, skip logic, and JavaScript formulas to XPath

  • Outputs a `migrated_survey.xml` file ready to upload to CommCare

  • Generates a `case_properties.txt` listing Salesforce fields from drilldowns (your future case properties)

What the tool does NOT do:

  • Migrate submission data (only form definitions)

  • Wire up case property updates (field mappings are recorded as comments in the XML for manual configuration)

  • Handle multimedia assets stored in Salesforce

  • Translate all JavaScript -- complex formulas are flagged with `#form/fake_formula` and need manual XPath rewriting

After running the tool:

  1. Copy the form to a new form (to generate a unique xmlns), then delete the original

  2. Review and fix any questions highlighted in red (untranslated formulas)

  3. Add calculated stop-conditions for any repeat groups

  4. Configure case management (see Step 3)

Terminology Differences: TaroWorks vs. CommCare

When building new forms, or "app building" as we call it on CommCare, there are some differences in terminology between TaroWorks & CommCare. The table below shows most of these.

TaroWorks

CommCare

Notes

TaroWorks

CommCare

Notes

Job (TaskTemplate)

Module

A Job groups a form with its Salesforce data connections. In CommCare, a Module groups forms that share a case type.

Survey / Form

Form (within a Module)

TaroWorks forms are Salesforce objects; CommCare forms are XForms built in the Form Builder.

Section

Group

A visual grouping of questions within a form.

Repeat Section

Repeat Group

A section that can be filled multiple times (e.g., listing household members).

Question

Question

Individual data collection field.

Option

Choice

A selectable answer for multiple-choice questions.

Skip Condition

Display Condition (relevant)

Controls whether a question is shown based on previous answers.

JavaScript Calculation

Hidden Value (XPath calculation)

TaroWorks uses JS; CommCare uses XPath expressions.

JavaScript Validation (throw)

Validation Condition (constraint)

Enforces data quality rules with error messages.

Drilldown

Case List + Case Selection

TaroWorks pushes Salesforce records to the device via a hierarchy. CommCare uses case lists to select existing cases.

Salesforce Object

Case Type

The category of entity being tracked (e.g., "Household", "Patient").

Salesforce Field

Case Property

An individual data point on a case (e.g., "due_date", "risk_score").

Salesforce Record

Case

A specific instance (e.g., a specific household or patient).

Question Mapping (QuestionMapping)

Case Update (Save to Case)

Maps a form answer to a field on the tracked entity. In TaroWorks this writes to Salesforce; in CommCare it updates a case property.

Pulldown / Prefill

Case Data (Load from Case)

Pre-populating form fields from existing data. TaroWorks pulls from Salesforce records; CommCare loads from case properties.

C