Salesforce migration for a non-profit organization

Salesforce migration for a non-profit organization

We migrated data from the legacy system to Salesforce, transforming the data to align with Salesforce’s structure and enabling the adoption of a more efficient business model.

Table of contents

Challenge

Our customer, Helping and Lending Outreach Support DBA HALOS, is a US-based non-profit organization founded in 1997. HALOS provides support and services for children who live in the full-time care of grandparents and other relatives. The customer offers individually tailored support to help each family succeed in caring for their children, operating as a one-stop shop for information, referrals, and other services for kinship caregivers.

To facilitate their key workflows and support day-to-day operations, including client management and case tracking, the customer used CiviCore, a cloud-based case management and data tracking system. But as the company’s service delivery matured, the limitations of CiviCore became increasingly apparent. The platform lacked the flexibility to support evolving business processes, particularly those required to enhance the customer’s kinship navigation program. 

This is why the customer transited to Salesforce, a more scalable and integrated platform. They adopted a customized version of Salesforce tailored to support their specific, evidence-based service delivery model. However, they had a few years' worth of data (demographic data (individuals and households) and case management data) that needed to be migrated, and each passing month added complexity and challenges to the migration. In addition to standard records such as accounts, contacts, and cases, the organization also needed to migrate unstructured content, including attachments and notes.

As the data model in Salesforce is significantly different from that in CiviCore, the migration required more than just data transfer, but also a thoughtful transformation of the customer’s existing data to fit the new structure. This, in turn, involved the reinterpretation of how their business processes were handled in CiviCore and their adaptation to the Salesforce model.

The customer was therefore seeking an experienced technology consultant or vendor to assist them with the migration from CiviCore to Salesforce. They chose Itransition based on our proven Salesforce expertise, our status as a certified Salesforce partner, and numerous certified Salesforce specialists on board. Our extensive experience working with non-profit organizations and a solid track record of successful data migration projects further reinforced their confidence in our ability to manage the complexities of their transition from CiviCore to Salesforce.

Solution

As part of the discovery and in-depth project exploration, we outlined a series of key stages to establish a solid foundation for an efficient migration process.

The project’s roadmap

Data analysis & extraction

The project team began by conducting a thorough analysis of the customer’s data landscape, familiarizing themselves with the CiviCore data model and exploring its data export mechanisms. During this stage, we discovered that the scope of the migration was larger than initially anticipated, as we identified additional custom objects related to the main objects slated for migration. While performing data extraction, we leveraged CiviCore’s built-in capabilities. Given the specifics of CiviCore, some fields in the extracted data could be generically or ambiguously named, which required manual cross-referencing with the live system to correctly identify and rename columns.

Data transformation & normalization

Initially, the customer assumed there would be 1:1 mapping between CiviCore and Salesforce objects. However, since the Salesforce data model was structured around a new business process, the existing CiviCore data required a significant adaptation to fit the new Salesforce schema. Given the differences between data models in legacy and future systems, the data transformation phase became a central focus. Also, unlike traditional relational databases, Salesforce operates within a predefined data model that enforces strict requirements for data structure, which required us to normalize and restructure the data accordingly before the migration.

Having analyzed the provided data mapping from CiviCore to Salesforce, we worked closely with the customer to define the rules for data cleansing and restructuring. Our goal was to organize the data in a way that not only aligned with Salesforce’s architecture but also minimized future maintenance challenges. This collaborative process helped the customer better understand the actual state of their data and how it would support their future operations.

We developed a TypeScript-based data transformation engine to process and normalize the data, leveraging the Salesforce Metadata API to auto-generate TypeScript types that ensured alignment with the target schema and improved data integrity prior to migration. The engine's capabilities included:

  • Identifying and reporting invalid or incomplete records
  • Normalizing the database structure to align with Salesforce’s schema
  • Enforcing naming convention and folder hierarchy for attachment migration
  • Adapting business logic from CiviCore to the new Salesforce model

Attachment files posed a specific challenge. Stored in SharePoint, they were not part of the CiviCore database. Our team developed a dedicated automation script to:

  • Download and process the file structure
  • Match attachments to related users

Data load & migration

Once the data was cleaned and transformed, our team proceeded with importing records and attachments into Salesforce. The migration followed a carefully planned sequence to respect object dependencies, starting with primary objects, such as accounts and contacts and then custom objects.

To ensure data quality and identify any areas requiring manual corrections, several rounds of initial data loading were conducted in the sandbox environment for testing and validation. We used Salesforce Data Loader, Bulk API, and REST API to handle various aspects of data loading.

Testing & validation

Data validation was an ongoing process throughout the project. After each data load, the team conducted checks to ensure data integrity and identify issues early. The final validation involved comparing the completeness of Salesforce data with the original CiviCore records, with a special focus on high-volume, high-complexity records that have multiple relationships since these were most likely to reveal issues. Having verified that all records and attachments had been successfully migrated and are fully accessible in Salesforce, we shared results with the customer for review and signoff.

Go-live

The project concluded with a successful go-live completed on schedule, when all records and attachments were deployed into a live Salesforce environment after testing and signoff by the customer.

Results

This migration turned out to be more than a technical exercise and required a strategic transformation as well. Our team reconciled legacy data with a forward-looking business model, improving data quality and creating a more robust and compliant system. We made sure to not only meet the project’s technical goals but also lay the foundation for improved service delivery and organizational insight – all within the defined budget and timelines.

  • 25,000+ main and custom records and 1.500 attachments migrated
  • 100% data consistency
  • Migration completed in 5 weeks

The project resulted in several key improvements for the customer:

  • Business process realignment, with the customer adopting a new, more effective business model.
  • Improved data quality, with the transformation process significantly enhancing the accuracy and completeness of the data.
  • Enhanced system capabilities, with Salesforce providing a more robust, scalable, and compliant platform better positioned to support future growth and innovation compared to CiviCore.
  • Customer enablement, helping the customer gain a clearer understanding of their data and how it supports their operations.