Mobile sales module in cloud: challenges and solutions for offline data synchronization

We deployed Adobe Experience Cloud aec-2022 mobile sales module in a cloud-hosted environment six months ago, and offline synchronization has been our biggest operational challenge. Our field sales team frequently works in areas with poor connectivity, and we’re seeing recurring issues with lost data and sync conflicts when devices reconnect.

The offline data store seems to have limitations we didn’t anticipate - it caps at around 5,000 records locally, and when sales reps exceed this during multi-day offline periods, older data gets purged before syncing. We’ve also encountered sync conflict resolution problems where local changes overwrite server updates, or vice versa, with no clear conflict resolution strategy.

Anyone else dealing with these offline challenges in cloud-hosted mobile sales deployments? How are you managing the offline data store capacity and implementing reliable sync conflict resolution? Curious about best practices with Adobe Mobile SDK for handling extended offline periods.

Offline Sync Architecture: Strategic Positions and Trade-offs

Offline synchronization in enterprise mobile deployments is fundamentally a distributed systems consistency problem, not a configuration tweak. There’s no single correct answer — the right architecture depends on your conflict tolerance, data criticality, and operational constraints. Here’s the decision landscape.


Viewpoint 1: Last-Write-Wins (LWW) with Timestamp Authority

Strategy: Server timestamp is authoritative. Local changes are accepted only if they post-date the last known server state.

Trade-offs:

  • Simple to implement via Adobe Mobile SDK conflict hooks
  • Loses legitimate field edits when clock drift exists between devices and cloud
  • Acceptable when field data is largely append-only (new visits, new contacts) rather than updates to shared records

When it fits: Low contention, reps working independent territories with minimal record overlap.


Viewpoint 2: Operational Transform / Merge-Field Strategy

Strategy: Conflict resolution at the field level, not the record level. Each field carries its own dirty flag and timestamp. Divergent fields are merged; only genuinely conflicting fields surface for manual resolution.

Trade-offs:

  • Significantly more complex to implement; requires custom logic in the Mobile SDK sync adapter layer
  • Reduces data loss substantially vs. LWW
  • Requires schema discipline — every field must be conflict-aware from the start
  • Manual resolution queue adds operational overhead

When it fits: High-value records (opportunity updates, contract terms) where partial data loss is commercially unacceptable.


Viewpoint 3: Optimistic Concurrency with Conflict Queue

Strategy: Accept all local writes. On sync, flag true conflicts to a back-office conflict resolution queue rather than auto-resolving. Sales ops or managers adjudicate.

Trade-offs:

  • No silent data loss — highest data integrity
  • Creates operational process burden; requires SLA for queue clearance
  • Conflict volume during large reconnect events can overwhelm the queue

When it fits: Regulated industries, high-stakes CRM data, or environments where an audit trail is mandatory.


The Local Storage Capacity Problem — Decision Criteria

The ~5,000 record cap is a hard architectural constraint (verify exact limit in your SDK version and target OS). Approaches diverge here:

Approach Mechanism Risk
Priority-based retention Rank records by recency + rep assignment; purge low-priority first Complex ranking logic; edge cases
Delta sync only Store diffs, not full records Requires server-side delta endpoint support
Segmented offline scope Pre-trip data selection — reps pull only their assigned accounts Process change management; rep adoption
Extended local store via SQLite layer Custom persistence beyond SDK defaults Maintenance burden; upgrade risk

Segmented offline scope is the most operationally sustainable for field sales. Reps explicitly define their offline working set before going dark. This converts a technical limitation into a planning discipline.


Governance Dimensions to Resolve Before Architecture Selection

  • Conflict ownership: Is resolution automated, manual, or hybrid? Who owns the queue?
  • Data criticality tiers: Not all records warrant the same conflict strategy — opportunity stage updates vs. call notes are not equivalent.
  • Sync event triggers: Reconnect-immediate vs. scheduled sync windows affect conflict volume and server load.
  • Observability: Do you have instrumentation on sync failures, conflict rates, and purge events? Without metrics, architecture choices are guesswork.

The Adobe Mobile SDK exposes conflict resolution callbacks — but the policy those callbacks enforce is entirely your design decision. The SDK is the mechanism; the governance framework is what makes it reliable.


This draft is based on general Adobe Experience Cloud knowledge. It has not been verified against your specific version and environment. Practitioners: verify the steps and share your experience below.

We hit the same 5,000 record limit and it was a nightmare during trade shows when reps collected massive lead lists offline. Our workaround was implementing a selective sync strategy - only downloading essential customer data to mobile devices rather than full account history. We also trained reps to manually sync at least once daily even with limited connectivity. Not ideal but reduced data loss by about 70%.

The offline data store limitation is a known constraint in aec-2022’s mobile architecture. Adobe Mobile SDK uses SQLite for local storage with default size limits to prevent excessive device storage consumption. You can configure larger limits in the SDK initialization, but be aware of performance impacts on older devices. For sync conflicts, the default behavior is last-write-wins which causes the overwrite issues you’re seeing. Consider implementing custom conflict handlers using the SDK’s conflict resolution callbacks to preserve both versions and flag for manual review.

Sync conflict resolution has been painful for us too. We lost several major deal updates because mobile changes overwrote recent server-side pricing updates. What helped was implementing timestamp-based conflict detection - we compare modification timestamps and automatically defer to server data if it’s newer, while flagging mobile changes for review. This required custom development beyond standard Adobe SDK functionality though.

For extended offline periods, consider implementing a tiered sync strategy. Priority 1 data (active opportunities, today’s appointments) syncs immediately when connectivity returns. Priority 2 data (general account updates, notes) syncs during scheduled overnight windows. Priority 3 data (historical records, attachments) only syncs on WiFi. This prevents sync queue overload and reduces conflict probability. Adobe Mobile SDK supports priority-based sync queues in aec-2022, though it’s not well documented.

The 5,000 record cap is configurable but increasing it significantly impacts app performance and battery life. Better approach is optimizing what data goes offline. Use Adobe’s data filtering APIs to sync only records modified in last 30 days plus pinned favorites. For conflict resolution, implement field-level merging instead of record-level - merge non-conflicting field changes and only flag actual conflicts. Also consider delta sync instead of full record sync to reduce bandwidth and conflict surface area.

These suggestions are really helpful. The tiered sync strategy and field-level conflict resolution sound promising. I’m curious if anyone has successfully increased the offline data store beyond 10,000 records without major performance degradation? Our sales cycles are long and reps really need access to more historical data offline.

Based on extensive deployments, here’s a comprehensive approach to offline data synchronization challenges in cloud-hosted mobile sales.

Offline Data Store Management: The default 5,000 record limit exists for good reason - mobile device constraints and sync performance. However, you can extend this strategically. In Adobe Mobile SDK configuration, increase the local database size limit to 15,000-20,000 records for modern devices (iOS 13+, Android 10+). Beyond this, you’ll see significant performance degradation during sync operations and local queries.

Implement intelligent data prioritization:

  • Active opportunities and accounts (last 90 days activity): Always sync
  • Pinned/favorite records: Always sync regardless of age
  • Historical data: On-demand fetch only, not stored offline
  • Attachments and documents: WiFi-only sync, excluded from offline store

Use Adobe’s data filtering APIs to define these rules in your mobile app initialization. This keeps your offline store lean while ensuring critical data availability.

Sync Conflict Resolution: The default last-write-wins behavior is inadequate for enterprise sales scenarios. Implement a three-tier conflict resolution strategy:

  1. Automatic Resolution (70% of conflicts): Use timestamp comparison and field-level merging. If server record is newer than device’s last sync, server wins. If device made changes to different fields than server updates, merge both changes automatically.

  2. Deferred Resolution (25% of conflicts): When same fields modified on both sides, create a conflict record in a staging area. Sales rep sees notification on next app launch to review and resolve manually. Both versions are preserved until resolution.

  3. Server Priority (5% of conflicts): For critical fields like pricing, contract terms, and approval status, always defer to server version and notify rep of local changes being overridden.

Implement this using Adobe Mobile SDK’s conflict resolution callbacks and custom business logic in your sync service layer.

Mobile SDK Usage Best Practices: For extended offline periods (multi-day conferences, remote areas), implement progressive sync:

  • Initial sync on app launch: Pull only essential data (today’s appointments, top 50 active opportunities)
  • Background sync: Every 4 hours when connectivity available, sync next priority tier
  • Manual sync trigger: Let reps force immediate sync of specific records they’re actively working on
  • Scheduled full sync: Daily overnight sync of all offline-enabled data

Configure Adobe Mobile SDK’s sync service with these intervals and priorities. Use the SDK’s network status monitoring to intelligently queue sync operations and retry failed syncs exponentially.

Data Loss Prevention: Implement local change tracking separate from Adobe’s sync mechanism. Log all mobile data modifications to a local audit table with timestamps and user context. If sync fails, these logs can be replayed or manually reconciled. This has saved us multiple times when sync conflicts resulted in data loss.

For your specific 5,000 record purge issue, configure the SDK’s cache eviction policy to prefer keeping newer records rather than arbitrary purging. Set retention rules that preserve records modified locally even if they’re older, ensuring unsynchronized changes never get purged.

Monitoring and Troubleshooting: Implement comprehensive sync logging. Track sync duration, conflict frequency, retry counts, and data loss incidents. Adobe’s cloud analytics can ingest these logs for trend analysis. We discovered 80% of our conflicts occurred during Monday morning syncs after weekend offline work, allowing us to optimize sync scheduling.

The combination of intelligent data filtering, field-level conflict resolution, and progressive sync strategies should reduce your data loss incidents by 90%+ while maintaining acceptable app performance even with extended offline usage.