CRM migration
Field-level mapping, validation, and rollback between FotoNotes and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
FotoNotes
Source
Salesforce Sales Cloud
Destination
Compatibility
12 of 12
objects map 1:1 between FotoNotes and Salesforce Sales Cloud.
Complexity
BStandard
Timeline
48–96 hours
Overview
FotoNotes is a property-inspection and field-operations platform built around three core constructs: Property (the container, analogous to a physical asset or site), Work Order (the containee, an inspection or maintenance task with photos and status), and Template (the inspection form structure). It stores roles (Portal Admin, Manager, Field User, Customer, Vendor) that are distinct from person records. Salesforce Sales Cloud has no native inspection or work-order object. All FotoNotes inspection data — work order status, photo count, template name, priority, due date, property relationships, and geolocation — requires Salesforce custom objects (Property__c and Work_Order__c) with type-aware custom fields. Core person records (contacts, customers, vendors) migrate to standard Salesforce Contact and Account objects with a Role_Type__c custom field identifying the FotoNotes role. We map FotoNotes Properties to Salesforce custom Property__c, Work Orders to custom Work_Order__c with a Property__c lookup to preserve the container hierarchy, and Template names to a custom pick-list on Work_Order__c. Original create dates and owner timestamps migrate to custom datetime fields since Salesforce sets CreatedDate at insertion time. Photo files re-upload to Salesforce Files; photo metadata (caption, flags) requires a custom Photo_Metadata__c text field because Salesforce Files attachments do not natively preserve inspection annotations. Workflows, batch reports, display-line configurations, and role-permission sets do not migrate — they are exported as reference documents for rebuild in Salesforce Flow, Reports, and profile assignments. Our migration runs via FotoNotes read API and Salesforce Bulk API, with a 24–48h delta-pickup window capturing in-flight changes during cutover.
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 FotoNotes object lands in Salesforce Sales Cloud, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
FotoNotes
Property (Container)
Salesforce Sales Cloud
Custom object: Property__c
1:1FotoNotes Property is a container record for a physical site or asset. Salesforce has no standard Property object. FlitStack creates Property__c with custom fields for property type, status, address components (mapped to the standard compound BillingAddress on Account or a separate Address__c custom object), and original FotoNotes ID preserved as Source_System_ID__c for delta-run deduplication.
FotoNotes
Work Order (Containee)
Salesforce Sales Cloud
Custom object: Work_Order__c
1:1FotoNotes Work Order is the primary inspection record. It maps to a custom Work_Order__c object because Salesforce has no native work-order entity in Sales Cloud. The object holds inspection details, template name, status, priority, photo count, due date, geolocation, and a lookup to Property__c. Original FotoNotes create date and last-modified date migrate to custom datetime fields since Salesforce CreatedDate and LastModifiedDate reflect migration insertion time.
FotoNotes
Template (Inspection form structure)
Salesforce Sales Cloud
Custom pick-list on Work_Order__c: Template_Name__c
1:1FotoNotes Templates define the inspection form structure and field set for a work order type. Template names migrate to a custom pick-list field Template_Name__c on Work_Order__c so the association is preserved. Conditional field logic and required-section rules within a template have no Salesforce equivalent and must be rebuilt as Salesforce page layout configurations or Flow decisions by your admin.
FotoNotes
Customer / Owner (person)
Salesforce Sales Cloud
Standard object: Contact + Role_Type__c custom field
1:1FotoNotes Customers are person records who can view assigned projects. They map directly to Salesforce Contact. A Role_Type__c custom pick-list field (value: 'Customer') identifies the FotoNotes role type on each Contact record. If a Customer shares an email with an existing FotoNotes Contact, both records merge to one Contact to prevent duplicates.
FotoNotes
Vendor (person)
Salesforce Sales Cloud
Standard object: Contact + Role_Type__c custom field
1:1FotoNotes Vendors are third-party company admins or field users assigned to work orders. They map to Salesforce Contact with Role_Type__c set to 'Vendor'. Vendor-specific fields (company name, services offered) map to Contact Account lookup where a vendor company Account exists, or to custom fields on Contact if no Account is present.
FotoNotes
FotoNotes User (internal staff)
Salesforce Sales Cloud
Standard object: Contact + Salesforce User lookup
1:1Internal FotoNotes users (Portal Admins, Managers, Field Users) are resolved by email match against existing Salesforce Users. Unmatched users are flagged before migration — your team either creates a Salesforce User or assigns records to a fallback owner. FotoNotes user records also surface as Contacts with Role_Type__c = 'Internal Staff' so the full person record exists in Salesforce even if no login license is assigned.
FotoNotes
Work Order Status (value set)
Salesforce Sales Cloud
Custom pick-list on Work_Order__c: Status__c
1:1FotoNotes work order status values (e.g., Pending, In Progress, On Hold, Completed, Rejected) are mapped value-by-value to a custom pick-list Status__c on Work_Order__c. Custom FotoNotes status values that have no Salesforce equivalent are flagged during mapping so your admin can add them to the pick-list before migration. Stage-entered timestamps from FotoNotes migrate to a custom datetime field for reporting continuity.
FotoNotes
Work Order Priority
Salesforce Sales Cloud
Custom pick-list on Work_Order__c: Priority__c
1:1FotoNotes priority values (e.g., Low, Medium, High, Emergency) map to a Priority__c custom pick-list on Work_Order__c. Value-by-value mapping ensures the priority label is preserved exactly as it appeared in FotoNotes. Custom priority values not in the standard set require pick-list addition in Salesforce before migration runs.
FotoNotes
Photo / Attachment
Salesforce Sales Cloud
Salesforce Files (ContentDocument / ContentVersion)
1:1FotoNotes photos attached to work orders re-upload to Salesforce Files. Each photo creates a ContentVersion record linked to the Work_Order__c via ContentDocumentLink. Original upload date and uploader (owner) are preserved as custom metadata on the ContentVersion. Note that FotoNotes-specific photo metadata (caption text, flag annotations, geolocation beyond standard address fields) does not transfer — it is preserved in a custom Photo_Metadata__c text field as a reference note for manual reconciliation.
FotoNotes
Batch Report (aggregated export)
Salesforce Sales Cloud
Custom object: Batch_Report_Reference__c
1:1FotoNotes Batch Reports aggregate inspection data across multiple work orders into a PDF. Salesforce Reports do not carry over as configured objects. FlitStack exports batch report metadata (report name, creation date, associated work order IDs, filter criteria) into a custom Batch_Report_Reference__c object. The report logic itself must be rebuilt in Salesforce Reports or a third-party BI tool — this is disclosed upfront so stakeholders can allocate rebuild effort.
FotoNotes
Work Order Comments / Activity Log
Salesforce Sales Cloud
Salesforce object: Task / Event / Note
1:1FotoNotes comments on work orders and the activity log (record creation, status changes, assignments) migrate to Salesforce Tasks and Notes attached to the Work_Order__c record. Original timestamps, comment authors, and parent Work_Order__c links are preserved. This keeps the full inspection history auditable inside Salesforce.
FotoNotes
Property Address / Geolocation
Salesforce Sales Cloud
Standard compound address on Account OR custom Address__c fields
1:1FotoNotes stores property address (street, city, state, zip, country) and geolocation (latitude/longitude). Street-level address migrates to the standard compound BillingAddress on an Account record linked from Property__c. Latitude and longitude that exceed standard address field precision migrate to custom decimal fields Latitude__c and Longitude__c on Property__c so geolocation is available for map integrations or Field Service Lightning.
| FotoNotes | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Property (Container) | Custom object: Property__c1:1 | Fully supported | |
| Work Order (Containee) | Custom object: Work_Order__c1:1 | Fully supported | |
| Template (Inspection form structure) | Custom pick-list on Work_Order__c: Template_Name__c1:1 | Fully supported | |
| Customer / Owner (person) | Standard object: Contact + Role_Type__c custom field1:1 | Fully supported | |
| Vendor (person) | Standard object: Contact + Role_Type__c custom field1:1 | Fully supported | |
| FotoNotes User (internal staff) | Standard object: Contact + Salesforce User lookup1:1 | Fully supported | |
| Work Order Status (value set) | Custom pick-list on Work_Order__c: Status__c1:1 | Fully supported | |
| Work Order Priority | Custom pick-list on Work_Order__c: Priority__c1:1 | Fully supported | |
| Photo / Attachment | Salesforce Files (ContentDocument / ContentVersion)1:1 | Fully supported | |
| Batch Report (aggregated export) | Custom object: Batch_Report_Reference__c1:1 | Fully supported | |
| Work Order Comments / Activity Log | Salesforce object: Task / Event / Note1:1 | Fully supported | |
| Property Address / Geolocation | Standard compound address on Account OR custom Address__c fields1: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.
FotoNotes gotchas
Container-to-contained field inheritance is implicit
Batch PDF reports are the only bulk export mechanism
Vendor sub-accounts require hierarchical mapping
FotoNotes is now SiteCapture — documentation split
Salesforce Sales Cloud gotchas
Workflow Rules and Process Builder are retired
Bulk API batch quota exhaustion during large imports
Storage overage billing is non-obvious
Account-Contact many-to-many relationship mapping
Territory and team member import ordering dependencies
Pair-specific challenges
Migration approach
Audit FotoNotes data inventory and schema
Before migration begins, FlitStack AI inventories all FotoNotes objects accessible via the API: Property records, Work Order records, Template definitions, Batch Reports, User accounts, Vendor/Customer contact records, and attachments. This audit produces a record count per object, a schema inventory listing all custom fields and pick-list values in FotoNotes, and a log of any work orders with multiple parent properties. The audit also identifies the oldest create dates so original timestamps can be flagged for preservation during mapping. This step typically takes 2–3 business days and is completed before any Salesforce schema work begins.
Set up Salesforce custom objects and fields
With the FotoNotes schema inventory complete, FlitStack creates the Property__c and Work_Order__c custom objects in your Salesforce sandbox, adds all required custom fields (Status__c, Priority__c, Template_Name__c, Photo_Count__c, Latitude__c, Longitude__c, Original_Create_Date__c, Source_System_ID__c, Photo_Metadata__c, etc.), and establishes the Property__c → Work_Order__c lookup relationship. If your org already has a Property__c or Work_Order__c object from a prior implementation, FlitStack appends fields to the existing object rather than creating duplicates. Pick-list values for Status__c and Priority__c are populated from FotoNotes' actual status and priority values identified in the audit. This step runs in a Salesforce sandbox first; production schema changes are applied after sample migration sign-off.
Resolve FotoNotes users and vendors by email match
FotoNotes users and vendor contacts are matched against existing Salesforce Users and Contacts by email address. Unmatched FotoNotes users are flagged in a pre-migration report with their FotoNotes role type and email — your team either creates a corresponding Salesforce User before migration or assigns those records to a designated fallback owner. Vendor and customer contacts without a matching Salesforce Contact are created as new Contact records with Role_Type__c populated. This resolution step prevents orphaned Work_Order__c records and ensures every migrated record has an OwnerId or assigned Contact before the full migration runs.
Run a sample migration with field-level diff
A representative slice migrates first — typically 50–200 records spanning properties, work orders, contacts, and a sample photo attachment. FlitStack generates a field-level diff between the source FotoNotes export and the destination Salesforce records so you can verify that Work_Order__c status and priority values mapped correctly, container relationships resolved to the right Property__c record, owner resolution found matches or flagged correctly, and photo files attached to the correct Work_Order__c. Sample migration sign-off is required before the full production run commits.
Full migration with delta-pickup and one-click rollback
The full migration runs against your Salesforce production org. A delta-pickup window (typically 24–48 hours after the main run) captures any FotoNotes properties, work orders, or photos created or modified during the cutover window — your team keeps working in FotoNotes throughout. FlitStack maintains an audit log of every insert, update, and error at the record and field level. If reconciliation finds discrepancies (missing records, incorrect field values, broken container relationships), one-click rollback reverses all migration operations and restores Salesforce to its pre-migration state. You are never committed to a migration that did not land cleanly.
Platform deep dives
FotoNotes
Source
Strengths
Weaknesses
Salesforce Sales Cloud
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 FotoNotes and Salesforce Sales Cloud.
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
FotoNotes: Not publicly documented.
Data volume sensitivity
FotoNotes doesn't expose a bulk API — REST + parallelization used for high-volume runs.
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 FotoNotes to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your FotoNotes to Salesforce Sales Cloud migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave FotoNotes
Other ways to arrive at Salesforce Sales Cloud
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.