Let me provide a comprehensive solution addressing all three critical areas you’re facing.
Offline Data Queue Configuration:
First, update your mobile server configuration (mobileserver.properties):
offline.queue.retention.days=7
offline.queue.maxSize=5000
offline.sync.retryAttempts=5
This ensures field updates are retained long enough for remote workers to sync and provides automatic retry logic.
Conflict Resolution Policy:
Change your conflict resolution strategy to handle asset lifecycle scenarios properly. In your mobile server config:
conflictResolutionStrategy=TIMESTAMP_PRIORITY
asset.conflict.notifyUser=true
asset.conflict.createAuditLog=true
The TIMESTAMP_PRIORITY mode compares the actual modification time of the change (when the field tech made the update) versus when it was applied on the server. This is more accurate than simple SERVER_WINS/CLIENT_WINS for offline scenarios. Enable user notification so field techs can review conflicts through the mobile UI, and audit logging helps track resolution patterns.
Asset Revision Handling:
The core issue is that your ITK extensions aren’t properly capturing revision context during offline updates. Modify your custom asset status change handler to include revision validation:
// Pseudocode - Asset revision-aware status update:
1. Retrieve asset object with AOM_refresh(assetTag, &assetObj)
2. Get current revision: AOM_ask_value_string(assetObj, "revision_id")
3. Compare with mobile client's cached revision_id
4. If mismatch detected, flag CONFLICT_DETECTED status
5. If match, proceed with status update and capture new revision
6. Store sync metadata: timestamp, user, device_id for audit
// Reference: Teamcenter ITK Programmer's Guide Section 8.4
In your mobile app’s sync handler, ensure you’re passing the revision context:
// Pseudocode - Mobile sync with revision context:
1. Build sync payload with: assetId, newStatus, revisionId, offlineTimestamp
2. Send POST to /tc/mobile/api/assets/syncStatus endpoint
3. Parse response for conflict flags or validation errors
4. If conflict, present resolution UI to user with both versions
5. On user choice, resubmit with conflict_resolution_mode parameter
// Mobile API Documentation: Asset Lifecycle Sync Protocol v2.1
Additional Recommendations:
-
Implement optimistic locking: Add a version token to your asset objects that increments with each change. The mobile client includes this token in update requests, and the server rejects updates if the token doesn’t match current state.
-
Enhanced logging: Enable detailed sync logging in your mobile server to track exactly where conflicts occur:
- Set `mobile.sync.logging.level=DEBUG
- Monitor
mobileserver_sync.log for conflict patterns
- Look for repeated conflicts on specific assets (might indicate workflow issues)
-
Conflict resolution dashboard: Build a simple admin dashboard showing pending conflicts, resolution rates, and common conflict types. This helps identify systemic issues versus one-off problems.
-
Field testing protocol: Before rolling this to production, test with your field ops team using this scenario:
- Tech A updates asset status offline
- Tech B updates same asset on server
- Tech A syncs and verifies conflict is properly detected
- Verify resolution UI shows both changes clearly
- Confirm audit log captures the full conflict resolution history
The combination of extended queue retention, timestamp-based conflict resolution, and proper revision handling should eliminate your sync failures. The key is ensuring your mobile client captures complete context (revision, timestamp, user) during offline changes, and your server-side handlers validate this context before applying updates.
Monitor your sync success rate after implementing these changes - you should see conflicts drop significantly, and remaining conflicts should be legitimate concurrent modifications that require manual resolution rather than technical failures.
This draft is based on general Teamcenter knowledge. It has not been verified against your specific version and environment. Practitioners: verify the steps and share your experience below.