-
1
Freeze requirements and set a cutover date
Before any export runs, write down what success looks like in one page. Name the objects moving over, the reports that must still work on day one, the automations that must not drop, and the user roles the new system has to support. Pick a cutover date that gives you at least two weeks of parallel running. Avoid month-end, quarter-end, and any week with a board meeting. Share the page with sales leadership, revenue operations, and finance, and get written sign-off. Scope creep during a migration is the single biggest reason projects slip past three months. A frozen scope with a dated cutover forces every mid-flight request into a post-launch backlog, which is where most of them belong anyway.
- List the Salesforce objects in active use; mark anything untouched in twelve months as out of scope
- List the reports and dashboards that must work on day one of go-live
- List the Flows, Process Builder flows, and Apex triggers that must survive
- Pick a cutover date that avoids quarter-end and major sales events
- Capture written sign-off from one sales leader and one finance leader
Tip: If stakeholders cannot name the reports they rely on, run a thirty-day read-only audit on your Salesforce dashboards and bring the list back for sign-off.
-
2
Audit and clean Salesforce before you export
A migration is the one time every team gets to delete the garbage with full air cover. Use that air cover. Pull a report of duplicate Accounts by name and website, duplicate Contacts by email, and Opportunities with no activity in six months. Merge duplicates in Salesforce before export using the standard merge tool for Accounts and Contacts, or Data Loader with external IDs for bulk cleanup. Close out stale Opportunities as closed-lost with a reason code so the historical conversion math still reads correctly. Normalize picklist values that drifted over the years, especially Lead Source, Industry, and Opportunity Stage. If you skip this step, you are paying to move bad data into a new system where it will embarrass you faster because every surface is cleaner.
- Run duplicate reports on Accounts, Contacts, and Leads
- Close out Opportunities with no activity in six months as closed-lost with reason codes
- Standardize Industry, Lead Source, and Stage picklist values
- Delete or archive test records created during Salesforce setup years ago
Tip: Record a short Loom explaining why records are being merged or closed. Reps will see the changes in Chatter feeds and the context prevents a wave of support tickets.
-
3
Rebuild roles, teams, and ownership in Strkr
Before any data lands, build the receiving structure. In Strkr, create the roles, teams, and user accounts that match your Salesforce profiles and territories. Decide early how you will handle the ownership mapping: Salesforce stores Owner as a user ID, and that ID has no meaning in Strkr. The cleanest path is to export the Salesforce user list, build a two-column CSV of Salesforce user IDs to Strkr user IDs, and run every record through that lookup during import. If a Salesforce owner has left the company, map them to a holding user named something like Former Owner so the records import cleanly without inheriting a working rep they do not belong to. Resist the urge to flatten the role tree during migration; a hierarchy rewrite in flight hides data loss. Rewrite the hierarchy after go-live if you need to.
- Create Strkr users for every active Salesforce user who needs an account
- Create a Former Owner holding user for records whose Salesforce owner has left
- Build a Salesforce user ID to Strkr user ID mapping CSV
- Mirror the Salesforce role hierarchy as closely as reasonable; defer re-orgs to after go-live
-
4
Design the object and field map
Open a spreadsheet with three columns: Salesforce object and field, Strkr object and field, and transformation rule. Walk every object in scope row by row. Standard objects map cleanly in most cases: Account to Account, Contact to Contact, Lead to Lead, Opportunity to Deal. Custom objects need a judgment call. Decide whether each one belongs as a new Strkr custom object, a related list on an existing object, or a set of custom fields. Flag anything that depends on a Salesforce feature you have not confirmed exists on the Strkr side, such as record types, person accounts, or formula fields with complex cross-object references. For every field, decide the transformation: direct copy, picklist remap, concatenation, split, or drop. A field with no owner on the receiving side is a field that gets dropped. Write the dropped list down and get sign-off from the business owner so there are no surprises on day one.
- Build the three-column mapping spreadsheet: Salesforce source, Strkr target, transformation rule
- Decide whether each Salesforce custom object becomes a Strkr custom object, related list, or set of fields
- Flag formula fields, roll-up summaries, and record types for a dedicated design review
- Produce a signed-off list of fields that will not be migrated so there are no day-one surprises
Tip: If a Salesforce formula field drives a report, do not try to port the formula. Recreate the output as a Strkr calculated field or let Strkr AI derive it from source data after go-live.
-
5
Build the Strkr receiving schema and permissions
With the map in hand, build the receiving schema in Strkr. Create custom fields on Account, Contact, Lead, and Deal to match the mapping sheet. Use the right field types from the start: picklists where Salesforce had picklists, multi-select where Salesforce had multi-select, date where Salesforce had date. A text field holding a date is a problem you will chase for months. Set up field-level permissions so sensitive fields such as revenue, close date, and executive sponsor notes carry the same visibility they did in Salesforce. Create any custom objects decided in the mapping step and link them to parents with the right relationship types. Freeze the schema before you run the first full import. Changing a field type after import means re-importing that column, and re-imports compound risk.
- Create custom fields on each core object with the correct type and length
- Set field-level permissions to mirror Salesforce visibility rules
- Create custom objects and link them to parents with the correct relationship type
- Freeze the schema and announce the freeze; schema changes after this point go through a change request
-
6
Export data from Salesforce using Weekly Export and Data Loader
Salesforce gives you two reliable export paths, and the right migration uses both. Weekly Export, available in Setup under Data Export, produces a full backup zip of every standard and custom object as CSV plus attachments. Request it at the start of your export week; it can take hours to generate for a large org. Weekly Export is the authoritative snapshot you build the migration from. Data Loader is the surgical tool for pulling specific objects on demand, running queries with SOQL, and extracting record IDs you will need for the ID lookup tables. Export in this order so parent records exist before children: Users, Accounts, Contacts, Leads, Opportunities, OpportunityLineItems, Products, Pricebooks, Tasks, Events, Notes, Attachments, Chatter feed items if you are keeping them. Keep a copy of every export file in a locked folder with the export timestamp in the filename. If anything goes sideways during import you will want the exact source of truth to diff against.
- Request a Weekly Export in Setup and download the full backup zip when ready
- Use Data Loader to export objects individually in parent-first order
- Save every export CSV with a timestamp in the filename to a locked folder
- Verify row counts in each CSV against the Salesforce record count report before proceeding
Tip: Weekly Export can take four to twelve hours for a mature org. Trigger it on a Friday morning so it is ready for a weekend validation pass before import.
-
7
Transform CSVs and import into Strkr
Open each exported CSV in a spreadsheet or a lightweight ETL tool and apply the transformation rules from the mapping sheet. The most common transforms: remap Salesforce user IDs to Strkr user IDs using the lookup CSV, remap Salesforce record IDs to a staging ID column so related records can be linked after import, convert date and datetime strings to the format Strkr expects, split or combine name fields where the models differ, and translate picklist values that changed names. Import in the same parent-first order used for export so related records find their parents on the first pass. Strkr accepts CSV import on every core object; import a small test batch first, verify a handful of records by hand, then run the full file. Keep an import log for each run with row counts in, row counts out, and the IDs of any records that failed. A clean import has fewer than one percent errors; above that, pause and investigate before continuing.
- Apply the mapping sheet transformations to each export CSV
- Remap owner fields using the Salesforce-to-Strkr user ID lookup
- Run a ten-record test import on each object before the full file
- Keep an import log with input count, output count, and failure IDs for every run
Tip: If more than one percent of a file fails to import, stop. Fixing one percent of a million rows later is cheaper than reimporting the whole file twice.
-
8
Rebuild automations as Strkr Flows and test them end to end
Salesforce automations rarely survive a lift and shift. Workflow Rules, Process Builder flows, Flow Builder flows, and Apex triggers each have Strkr equivalents in Flows, but the trigger model and the action set differ. Walk the automation inventory from Step One and recreate each one in Strkr Flows. Common patterns translate directly: notify the owner when a Deal stage changes, create a Task when a Contact is created, update a field when another field changes. Complex Apex logic is usually a sign the business rule was never written down; use the rebuild as a chance to document the intent in plain language first, then build the Flow against that intent. Test every Flow end to end with real data in a sandbox before enabling it in production. Pay special attention to automations that touch billing, forecasting, or external systems. A Flow that silently fails to update a close-date field will not surface until month-end forecast drift makes it obvious.
- Walk the frozen automation inventory and categorize each rule by complexity
- Rebuild each automation as a Strkr Flow with a plain-language description of intent
- Test every Flow in a sandbox with representative real data before enabling in production
- Enable Flows one at a time on the first business day after cutover and monitor logs for errors
Tip: For any automation touching billing or forecasting, require a sign-off from the finance owner before enabling the Flow in production.
-
9
Run two weeks of parallel validation and train the team
Do not flip the switch and shut Salesforce down the same day. Run both systems in parallel for at least two weeks. During parallel, reps continue to work primarily in Salesforce but spot-check their records in Strkr daily. Revenue operations runs the top five forecast reports in both systems every Monday and compares. Any delta above two percent gets investigated the same day. In parallel, run the training. Keep sessions short, forty-five minutes maximum, and role-based: one session for reps, one for managers, one for revenue operations. Record every session. Set up a dedicated Strkr channel in your internal chat tool for migration questions and staff it with the admin and one experienced rep for the full parallel window. Training that happens in the week before go-live is better than training delivered in a dense day-long bootcamp, which nobody remembers.
- Run both systems in parallel for at least two weeks before cutover
- Compare the top five forecast reports in both systems every Monday; investigate any delta above two percent
- Deliver forty-five-minute role-based training sessions and record them
- Staff a dedicated migration-questions channel with an admin and one rep
Tip: If parallel validation finds a delta you cannot explain in forty-eight hours, push the cutover date. A migration that goes live with unexplained numbers never recovers trust.
-
10
Decommission Salesforce on a dated plan
The last mile is the one most migrations skip, and it is the one that costs the most if you skip it. Build a dated decommission plan the week before cutover. On cutover day, put Salesforce into read-only mode by downgrading user profiles so nobody can create or edit records; a frozen source of truth stays trustworthy. Thirty days after cutover, pull a final Weekly Export and archive it to cold storage along with the mapping sheet, import logs, and automation documentation. Sixty days after cutover, remove paid user licenses to stop the burn. Ninety days after cutover, cancel the Salesforce contract or formally renew only the minimum licensing needed for historical audit access, which is usually one or two admin seats. Document the archive location and retention policy. Finance and legal will ask for it, and a decommission plan with named owners and dates is the artifact that lets them say yes.
- Day zero: downgrade all Salesforce user profiles to read-only so the system freezes as a historical reference
- Day thirty: pull a final Weekly Export and archive to cold storage with mapping sheet and import logs
- Day sixty: remove paid user licenses to stop recurring cost
- Day ninety: cancel the Salesforce contract or renew only the minimum admin seats needed for audit
- Document archive location, retention policy, and the admins authorized to access it
Tip: Keep one or two Salesforce admin seats alive for at least a year if you have any chance of a future audit referencing the old system. The cost is small relative to the risk of needing historical data you cannot reach.