CRM migration

Migrate from FotoNotes to Salesforce Sales Cloud

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 logo

FotoNotes

Source

Salesforce Sales Cloud

Destination

Salesforce Sales Cloud logo

Compatibility

100%

12 of 12

objects map 1:1 between FotoNotes and Salesforce Sales Cloud.

Complexity

BStandard

Timeline

48–96 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

FotoNotes logo

FotoNotes

What's pushing teams away

  • Status updates on work orders sometimes fail to sync across the web portal and mobile app, causing field supervisors to lose visibility on which properties have been completed.
  • The platform rebranded from FotoNotes to SiteCapture in 2022, and the two product names cause confusion during vendor evaluation and support escalation — existing customers on the legacy FotoNotes branding struggle to locate updated documentation and pricing pages.
  • Batch report generation is an admin-only feature, so front-line field managers who need on-demand PDF summaries must request exports from a portal admin rather than generating them independently.
  • Custom fields created via templates are per-account and not easily documented — when migrating off platform, the complete field schema requires manual enumeration from within the portal admin settings.

Choosing

Salesforce Sales Cloud logo

Salesforce Sales Cloud

What's pulling them in

  • The AppExchange marketplace with 5,000+ prebuilt apps gives enterprises integrations for nearly every business workflow without custom development.
  • Native Einstein AI for lead scoring, opportunity insights, and predictive forecasting adds intelligence without a separate platform purchase.
  • Territory management, multi-currency support, and advanced forecasting satisfy the needs of complex B2B sales organizations with structured revenue teams.
  • Slack, Tableau, and CPQ are deeply integrated into the core platform, keeping the sales stack unified for teams already in the Salesforce ecosystem.
  • Organizations with a large, established Salesforce implementation choose it because switching costs — integrations, custom code, trained admins — are prohibitive.

Object mapping

How FotoNotes objects map to Salesforce Sales Cloud

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)

maps to

Salesforce Sales Cloud

Custom object: Property__c

1:1
Fully supported

FotoNotes 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)

maps to

Salesforce Sales Cloud

Custom object: Work_Order__c

1:1
Fully supported

FotoNotes 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)

maps to

Salesforce Sales Cloud

Custom pick-list on Work_Order__c: Template_Name__c

1:1
Fully supported

FotoNotes 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)

maps to

Salesforce Sales Cloud

Standard object: Contact + Role_Type__c custom field

1:1
Fully supported

FotoNotes 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)

maps to

Salesforce Sales Cloud

Standard object: Contact + Role_Type__c custom field

1:1
Fully supported

FotoNotes 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)

maps to

Salesforce Sales Cloud

Standard object: Contact + Salesforce User lookup

1:1
Fully supported

Internal 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)

maps to

Salesforce Sales Cloud

Custom pick-list on Work_Order__c: Status__c

1:1
Fully supported

FotoNotes 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

maps to

Salesforce Sales Cloud

Custom pick-list on Work_Order__c: Priority__c

1:1
Fully supported

FotoNotes 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

maps to

Salesforce Sales Cloud

Salesforce Files (ContentDocument / ContentVersion)

1:1
Fully supported

FotoNotes 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)

maps to

Salesforce Sales Cloud

Custom object: Batch_Report_Reference__c

1:1
Fully supported

FotoNotes 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

maps to

Salesforce Sales Cloud

Salesforce object: Task / Event / Note

1:1
Fully supported

FotoNotes 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

maps to

Salesforce Sales Cloud

Standard compound address on Account OR custom Address__c fields

1:1
Fully supported

FotoNotes 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.

Gotchas + challenges

What specifically takes care here

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 logo

FotoNotes gotchas

High

Container-to-contained field inheritance is implicit

Medium

Batch PDF reports are the only bulk export mechanism

Medium

Vendor sub-accounts require hierarchical mapping

Low

FotoNotes is now SiteCapture — documentation split

Salesforce Sales Cloud logo

Salesforce Sales Cloud gotchas

High

Workflow Rules and Process Builder are retired

High

Bulk API batch quota exhaustion during large imports

Medium

Storage overage billing is non-obvious

Medium

Account-Contact many-to-many relationship mapping

Low

Territory and team member import ordering dependencies

Pair-specific challenges

  • Photo metadata (captions, flags, annotations) has no Salesforce Files equivalent

    FotoNotes photos carry inspection-specific metadata: caption text entered by the field user, flag annotations marking defects or areas of concern, and geolocation beyond street address. Salesforce Files (ContentDocument / ContentVersion) store the file binary and basic title but do not natively preserve FotoNotes-specific photo metadata fields. FlitStack re-uploads photos as Salesforce Files preserving the original binary and title, but caption text and flag annotations migrate to a custom Photo_Metadata__c long-text field on the associated Work_Order__c record. Your team should review Photo_Metadata__c after migration to confirm all annotation data is legible — in some cases, the metadata references require manual re-entry in Salesforce if the field user needs it inside the record detail page.

  • Multi-property work orders require a primary assignment decision before migration

    FotoNotes container/containee model supports a work order that spans multiple properties — the same inspection task can be linked to two or more Property records simultaneously. Salesforce Work_Order__c uses a single Property__c lookup field, which enforces a strict one-to-one parent relationship by default. FlitStack surfaces every FotoNotes work order with multiple parent properties during the pre-migration audit. The primary property maps to Work_Order__c.Property__c; additional properties are stored in a Secondary_Properties__c custom multi-select text field. Your admin must decide and document the primary assignment rule (most-recently-modified property, largest property by square footage, etc.) before migration runs — this is a stakeholder decision, not an automated one.

  • Vendor and customer roles require contact deduplication before migration

    FotoNotes stores vendors and customers as separate role types distinct from contact records — a vendor company admin is a Vendor role even if they also have an email in the system as a customer contact. Salesforce Contact is a single person record with no native role-type distinction. During migration, vendors and customers without a matching FotoNotes contact email are created as new Salesforce Contacts with Role_Type__c set to 'Vendor' or 'Customer'. Where a vendor or customer email matches an existing FotoNotes contact, the records merge to a single Contact with the role type appended. This deduplication logic prevents duplicate Contact creation but requires stakeholder sign-off on the merge rule before migration runs.

  • Batch report logic does not transfer — only metadata migrates

    FotoNotes Batch Reports aggregate inspection data across multiple work orders into a single PDF export, configured with specific filters, sort orders, and column selections. Salesforce Reports aggregate via report types and saved filters that are configured entirely inside Salesforce — they do not carry over from any external system. FlitStack exports batch report metadata (report name, filter criteria, creation date, associated work order IDs) into a custom Batch_Report_Reference__c object so the existence and scope of each FotoNotes report is documented. The report logic itself must be rebuilt from scratch using Salesforce Reports & Dashboards or a third-party BI tool. This is disclosed upfront so stakeholders can budget the rebuild effort and decide which reports to prioritize.

  • Template conditional logic and required-field rules require manual rebuild

    FotoNotes Templates define the structure of a work order type — which fields appear, which are required, which sections are conditional on prior answers. Salesforce has no template engine for custom objects that enforces conditional field visibility or cross-field validation at the form level. Template names migrate as a Template_Name__c pick-list field on Work_Order__c so the association is recorded, but the conditional logic (e.g., 'show roof-inspection section only if property_type = residential') must be rebuilt. Your Salesforce admin can implement this using page layout field visibility rules, required-field configurations, or Flow screens — but FotoNotes template rules do not transfer as executable logic.

Migration approach

Six steps for a successful FotoNotes to Salesforce Sales Cloud data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

Context on both ends of the pair

FotoNotes logo

FotoNotes

Source

Strengths

  • Photo-first inspection workflow with mobile app capture and cloud sync across devices
  • Container/containee data model reduces duplicate property data across large portfolios
  • Supports seven distinct user roles including vendor admin and customer read-only access
  • Batch PDF report exports allow portfolio-level review across multiple properties at once
  • Field user mobile app works offline and syncs when connectivity is restored

Weaknesses

  • The FotoNotes-to-SiteCapture rebranding splits web presence and creates documentation gaps for legacy customers
  • Granular role-based permissions require careful mapping during migration — vendor admin and customer roles do not map directly to standard CRM roles
  • Custom work type templates vary by account, making schema extraction non-trivial without direct portal admin access
  • Status synchronization issues between web and mobile are an ongoing pain point reported in user reviews
  • No publicly documented public API means programmatic data export relies on the admin batch report feature rather than a REST endpoint
Salesforce Sales Cloud logo

Salesforce Sales Cloud

Destination

Strengths

  • Largest enterprise app ecosystem in CRM with 5,000+ AppExchange integrations covering nearly every vertical workflow.
  • Native Einstein AI delivers lead scoring, opportunity insights, and predictive forecasting without a third-party layer.
  • Advanced territory management, multi-currency, and flexible forecasting satisfy complex B2B revenue structures.
  • Deep platform extensibility: Custom Objects, Apex, Flow, and the Metadata API allow full schema customization.
  • Well-documented REST API, Bulk API, and Composite API with published rate limits for programmatic migration.

Weaknesses

  • Pricing model is layered and opaque in practice: per-seat fees plus storage overages, add-on subscriptions, and annual uplifts compound to 30–40% above sticker price.
  • Workflow Rules and Process Builder are deprecated, forcing all orgs onto Salesforce Flow — a migration task that catches many teams by surprise.
  • Steep administrative complexity: meaningful configuration requires a dedicated Salesforce admin or consultant.
  • API rate limits are edition-gated (100k/day base for Enterprise) and easily exhausted by large historical imports without throttling.
  • Data export is exportable via Data Loader but preserving relationship integrity across 30+ objects requires careful ETL sequencing.

Complexity grading

How hard is this migration?

Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across FotoNotes and Salesforce Sales Cloud.

  • Object compatibility

    B

    1 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    FotoNotes: Not publicly documented.

  • Data volume sensitivity

    B

    FotoNotes doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your FotoNotes to Salesforce Sales Cloud migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about FotoNotes to Salesforce Sales Cloud data migrations

Answers to the questions buyers ask most during FotoNotes to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most FotoNotes-to-Salesforce migrations complete in 48–96 hours of clock time for under 25,000 records. Larger inventories with 100,000+ work orders, complex multi-property relationships, or heavy custom template usage extend to 7–14 days. FotoNotes data tends to be moderate in volume but high in schema complexity because inspection metadata does not map to standard CRM fields — the Salesforce custom object and field design step is typically the longest planning phase before any data moves.

Adjacent paths

Related migrations to explore

Ready when you are

Move from FotoNotes.
Land in Salesforce Sales Cloud, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day