[{"data":1,"prerenderedAt":1475},["ShallowReactive",2],{"guide:en:field-operations/version-management":3},{"id":4,"title":5,"body":6,"description":1467,"extension":1468,"meta":1469,"navigation":1470,"path":1471,"seo":1472,"stem":1473,"__hash__":1474},"guide_en/en/user/field-operations/version-management.md","Version Management — Collaborative Editing and Conflict Resolution",{"type":7,"value":8,"toc":1417},"minimark",[9,14,18,23,26,60,63,67,70,76,83,93,98,124,136,141,152,156,161,166,177,181,184,189,206,211,222,227,244,248,258,263,283,292,306,309,313,323,331,348,355,358,361,365,368,379,382,388,392,396,401,418,423,443,449,454,460,466,470,493,497,500,505,521,525,530,541,546,557,562,573,577,581,592,596,602,606,609,616,620,637,642,646,651,665,670,681,686,694,698,701,705,710,724,729,735,740,751,755,759,773,777,783,787,801,806,826,829,833,838,849,854,865,869,874,885,891,897,900,904,907,912,918,922,927,938,943,954,959,970,974,981,986,997,1000,1004,1008,1013,1030,1035,1046,1050,1055,1061,1066,1072,1077,1083,1088,1094,1098,1103,1114,1119,1125,1129,1133,1136,1150,1154,1159,1165,1170,1181,1185,1190,1205,1210,1221,1226,1240,1244,1248,1253,1264,1269,1280,1284,1289,1307,1312,1323,1327,1332,1349,1353,1357,1368,1373,1384,1388],[10,11,13],"h1",{"id":12},"version-management","Version Management",[15,16,17],"p",{},"Aptli's version management system lets you edit maps and schematics on your device — at your desk, in subway tunnels, on remote sites, or anywhere with no connectivity — and submit your changes when you're ready. The system auto-saves your in-progress work to the device as you go, detects conflicts when two users have edited the same area, preserves permanent version history for every commit, and gives admins a review queue before field edits go live. This page covers how to use the version controls, the device-storage model, and how to resolve conflicts.",[19,20,22],"h2",{"id":21},"mental-model-the-three-sided-coin","Mental Model — The Three-Sided Coin",[15,24,25],{},"The version manager has three faces, all working with the same on-device store:",[27,28,29,42,51],"ul",{},[30,31,32,36,37,41],"li",{},[33,34,35],"strong",{},"Auto save to device"," — ",[38,39,40],"em",{},"when"," your in-progress work is written to your device's storage. Cadence-only; doesn't talk to the server.",[30,43,44,36,47,50],{},[33,45,46],{},"Work from device",[38,48,49],{},"what"," the app reads from when you open a list page (the device's local copy vs. live from the server). Read-side switch.",[30,52,53,36,56,59],{},[33,54,55],{},"Version Manager window",[38,57,58],{},"the view"," of what's currently on your device (drafts, pending changes, commits) and the controls to act on them (Submit, Resync, etc.).",[15,61,62],{},"Together they let you keep editing through patchy connections, while keeping the team-side commit/review workflow intact for when you're ready to push.",[19,64,66],{"id":65},"version-controls-interface","Version Controls Interface",[15,68,69],{},"Version controls appear in two places depending on context:",[15,71,72,75],{},[33,73,74],{},"On the map"," — the toolbar at the top of the map surface. On desktop they sit in the first row of icons next to the mode selector and data‑transfer button; on mobile they form the first line of the bottom navigation bar.",[15,77,78],{},[79,80],"img",{"alt":81,"src":82},"Version Toolbar","/guide/field-operations/version-toolbar.png",[15,84,85,88,89,92],{},[33,86,87],{},"On list pages"," (Tasks, Work Orders, Reports, Projects, Inventory, etc.) — the action strip is in the ",[33,90,91],{},"upper-right of the filter row"," at the top of the page. The same Add, Undo, Redo, Resync, and Submit buttons appear there alongside any bulk-action controls. On mobile, list pages render the action strip at the top of the page inside the page header.",[15,94,95],{},[33,96,97],{},"Primary Controls:",[27,99,100,106,112,118],{},[30,101,102,105],{},[33,103,104],{},"Undo"," - Revert the last change in current session",[30,107,108,111],{},[33,109,110],{},"Redo"," - Reapply a change that was undone",[30,113,114,117],{},[33,115,116],{},"Resync"," - Reset the in-memory state and replay every recorded change. Used to push pending diffs into the live records, or to recover after a corrupted session",[30,119,120,123],{},[33,121,122],{},"Submit"," - Push all uncommitted changes to the server",[15,125,126,129,130,132,133,135],{},[33,127,128],{},"Pending-changes glow:","\nWhen there are diffs that haven't been applied to your in-memory records yet (typical after coming back from work-from-device mode, or after an undo), the ",[33,131,110],{}," and ",[33,134,116],{}," buttons pulse with a subtle green ring. This is your cue to apply or replay them — the app does not auto-walk through your pending diffs by design, so nothing changes silently behind your back.",[15,137,138],{},[33,139,140],{},"Uncommitted Changes Badge:",[27,142,143,146,149],{},[30,144,145],{},"Orange badge on SelectedFeatures button shows count of uncommitted changes",[30,147,148],{},"Updates reactively as you create/edit/delete features",[30,150,151],{},"Helps track pending work before Submit",[19,153,155],{"id":154},"how-versioning-works","How Versioning Works",[15,157,158],{},[38,159,160],{},"(Server imports: background jobs such as automated data feeds create and commit their own versions.  End users do not need to load these manually – imported features simply appear in the map once the job finishes.)",[162,163,165],"h3",{"id":164},"the-versioncommit-flow","The Version/Commit Flow",[167,168,173],"pre",{"className":169,"code":171,"language":172},[170],"language-text","1. Draft Created       → Change exists on your device\n   ↓                     Feature has _uncommitted flag\n   \n2. Edit on device      → Modify properties, geometry, relationships\n   ↓                     Auto-save persists to device storage as you go\n   \n3. Submit              → Push changes to server\n   ↓                     Server creates version record\n   \n4. Conflict Check      → Server detects spatial/ID conflicts\n   ↓                     Option to view others' drafts\n   \n5. Merge or Rollback   → Accept changes or undo\n   ↓\n   \n6. Version Compressed  → Historical state preserved forever\n                         Change becomes permanent record\n","text",[174,175,171],"code",{"__ignoreMap":176},"",[162,178,180],{"id":179},"three-change-tracking-systems","Three Change Tracking Systems",[15,182,183],{},"Aptli uses different patterns based on workflow needs:",[15,185,186],{},[33,187,188],{},"1. Versioned Models (Map Features, Layers, Schematics):",[27,190,191,194,200,203],{},[30,192,193],{},"Changes stored on your device until Submit",[30,195,196,199],{},[174,197,198],{},"_uncommitted"," flag tracks draft state",[30,201,202],{},"Conflicts detected via spatial analysis",[30,204,205],{},"Permanent version history (never deleted)",[15,207,208],{},[33,209,210],{},"2. Real-Time Models (Assignments, Reports, Transactions):",[27,212,213,216,219],{},[30,214,215],{},"Changes saved immediately to the server",[30,217,218],{},"No on-device drafting (execution requires confirmation)",[30,220,221],{},"No version history (operational data)",[15,223,224],{},[33,225,226],{},"3. Tasks (Hybrid):",[27,228,229,232,235],{},[30,230,231],{},"Versioned for planning phase (edit on device, push when ready)",[30,233,234],{},"Real-time for execution (assignments bypass versions)",[30,236,237,238,243],{},"See ",[239,240,242],"a",{"href":241},"/guide/work-fulfillment/","Work Fulfillment Guide"," for details",[19,245,247],{"id":246},"auto-save-to-device","Auto Save to Device",[15,249,250,251,254,255,257],{},"Auto save is the ",[38,252,253],{},"cadence knob"," — it controls ",[33,256,40],{}," the app writes your in-progress diffs from memory to your device's storage. It never talks to the server; the on-disk copy is purely there so a refresh, a crash, or a closed tab doesn't lose your work.",[15,259,260],{},[33,261,262],{},"Three save triggers:",[27,264,265,271,277],{},[30,266,267,270],{},[33,268,269],{},"Idle debounce (~5s)"," — every change resets a short timer; the save fires 5s after your last edit. Bursts (drawing 100 features in a row, typing into a properties form) collapse into a single write.",[30,272,273,276],{},[33,274,275],{},"Heartbeat (~60s)"," — a periodic check flushes whatever's pending if the dirty flag is set. Catches \"user is editing continuously without ever pausing 5s\" so you never lose more than ~60s of work.",[30,278,279,282],{},[33,280,281],{},"Hard fences"," — closing the browser tab, hiding it (Cmd+Tab away), or navigating to a different page always flushes the pending state. These ignore the toggle below by design — data preservation is non-negotiable.",[15,284,285,288,289],{},[33,286,287],{},"Toggle: \"Auto save to device\" / \"Manual save to device\""," ",[38,290,291],{},"(Version Manager menu)",[27,293,294,300],{},[30,295,296,299],{},[33,297,298],{},"Auto save on (default)"," — idle debounce + heartbeat + hard fences all run. You don't think about it.",[30,301,302,305],{},[33,303,304],{},"Manual save off"," — only the hard fences fire. In-progress edits live in memory; nothing hits the device's storage until you trigger an explicit save (Submit, an explicit \"Save\" action) or one of the hard-fence events kicks in. Useful when you want to keep many speculative edits without persisting them between idle periods.",[15,307,308],{},"In both modes, hard fences ALWAYS flush — closing the tab will not lose unsaved work in either mode.",[19,310,312],{"id":311},"work-from-device","Work from Device",[15,314,315,316,254,319,322],{},"Work from device is the ",[38,317,318],{},"read-source switch",[33,320,321],{},"what the app reads from"," when you open a list page or the map. It's independent of auto save.",[15,324,325,288,328],{},[33,326,327],{},"Toggle: \"Work from device\" / \"Work from server\"",[38,329,330],{},"(Version Manager menu, or version-status pill in the page header)",[27,332,333,339],{},[30,334,335,338],{},[33,336,337],{},"Work from server (default)"," — list pages and the map fetch live from the server. Latest data, but you need a connection.",[30,340,341,343,344,347],{},[33,342,46],{}," — list pages and the map serve from your device's local copy (the ",[33,345,346],{},"baseline",": a snapshot of records the app prefetched or you previously loaded). No server calls for read. Writes still queue locally as drafts; they push to the server the next time you toggle back to server-mode and Submit.",[15,349,350,351,354],{},"When you toggle on, the app prefetches data for the most-used endpoints (work orders, tasks, reports, sites, stock items, plus map points/lines/polygons) into the baseline. The map \"snapshots\" whatever features are currently loaded. Use this ",[33,352,353],{},"before going to a no-signal site"," so the local copy is fresh.",[15,356,357],{},"When you toggle back to \"Work from server\" with pending un-pushed changes, the app surfaces a \"you have unsynced changes\" toast — your cue to Submit or apply them via Resync.",[15,359,360],{},"The pulsing-green Redo/Resync glow described above stays visible whenever there are diffs not yet applied to the live records, so the visual cue is always there even if you missed the toast.",[19,362,364],{"id":363},"per-user-device-isolation","Per-User Device Isolation",[15,366,367],{},"The version manager scopes all on-device storage by user. If two people log into Aptli on the same device:",[27,369,370,373,376],{},[30,371,372],{},"Each user only sees their own drafts in the local Version Manager list.",[30,374,375],{},"A draft saved by one user can't accidentally overwrite the other's working version.",[30,377,378],{},"Staged file uploads, the offline write queue, and the \"currently checked-out\" pointer are all per-user.",[15,380,381],{},"Server-side, drafts are still gated by the standard owners/permissions system — sharing a draft requires explicit add-as-owner via the Admin → Versions surface. The local isolation is layered on top: each user's device-side store is invisible to other users on the same device.",[15,383,384,387],{},[33,385,386],{},"Practical implication:"," if you log in as someone else \"to check something\" on a shared field tablet, you won't see your own pending drafts in that session. Log back in as yourself to pick them up where you left off.",[19,389,391],{"id":390},"using-version-controls","Using Version Controls",[162,393,395],{"id":394},"submit-push-changes-to-server","Submit - Push Changes to Server",[15,397,398],{},[33,399,400],{},"When to Submit:",[27,402,403,406,409,412],{},[30,404,405],{},"End of work session (push progress to server)",[30,407,408],{},"Before switching projects (persist changes server-side)",[30,410,411],{},"After major edits (create a checkpoint)",[30,413,414,415,417],{},"Before flipping to ",[33,416,46],{}," (so the baseline reflects your latest server-side state)",[15,419,420],{},[33,421,422],{},"What Gets Submitted:",[27,424,425,431,434,437,440],{},[30,426,427,428,430],{},"All features with ",[174,429,198],{}," flag",[30,432,433],{},"Layer modifications",[30,435,436],{},"Schematic diagram changes",[30,438,439],{},"Property updates, geometry edits, new features",[30,441,442],{},"Any files attached to those records (photos, documents)",[15,444,445,448],{},[38,446,447],{},"Note:"," server‑side import jobs (e.g. nightly GeoJSON imports) also create versions automatically; these appear on the Admin → Versions page and their features become visible to users as soon as the job completes, just like normal commits.",[15,450,451],{},[33,452,453],{},"Workflow:",[167,455,458],{"className":456,"code":457,"language":172},[170],"1. Make changes (draw, edit, import features)\n2. Monitor uncommitted badge count\n3. Click Submit when ready\n4. Check for conflicts (if any)\n5. Resolve conflicts or accept submission\n",[174,459,457],{"__ignoreMap":176},[15,461,462],{},[79,463],{"alt":464,"src":465},"Data Transfer Export Tab","/guide/field-operations/export-tab.png",[162,467,469],{"id":468},"request-commit-admin-review","Request Commit & Admin Review",[15,471,472,473,476,477,480,481,484,485,488,489,492],{},"For non‑administrators the Submit button initially acts as a ",[38,474,475],{},"request for review"," rather than an immediate publish. When you choose ",[33,478,479],{},"Request Commit"," the version is flagged ",[174,482,483],{},"submittedForReview"," and saved to the server; it does ",[33,486,487],{},"not"," become visible to other users until an admin approves it. Administrators open the new ",[33,490,491],{},"Admin → Versions"," page (see the Administration guide) to see a queue of pending versions; they can either commit the version (making it live) or delete it. This workflow ensures that field edits are checked before being applied to the shared dataset.",[162,494,496],{"id":495},"file-attachments","File Attachments",[15,498,499],{},"Any files you attach to a record (photos, documents, etc.) are staged locally as part of your current version. They are uploaded automatically when the version is submitted and included in the commit process;  if you undo or discard changes the staged files are removed. See the Development documentation for technical details on file staging.",[15,501,502],{},[33,503,504],{},"Result:",[27,506,507,510,513,518],{},[30,508,509],{},"Changes visible to all users",[30,511,512],{},"Version record created on server",[30,514,515,517],{},[174,516,198],{}," flag removed",[30,519,520],{},"Badge count resets to 0",[162,522,524],{"id":523},"undo-revert-last-change","Undo - Revert Last Change",[15,526,527],{},[33,528,529],{},"What It Does:",[27,531,532,535,538],{},[30,533,534],{},"Steps backward through change history",[30,536,537],{},"Works on uncommitted local changes",[30,539,540],{},"Maintains redo stack (can redo after undo)",[15,542,543],{},[33,544,545],{},"Limitations:",[27,547,548,551,554],{},[30,549,550],{},"Only affects current session changes",[30,552,553],{},"Cannot undo submitted/committed changes (use Resync instead)",[30,555,556],{},"History cleared on page reload",[15,558,559],{},[33,560,561],{},"Use Cases:",[27,563,564,567,570],{},[30,565,566],{},"\"Oops, deleted wrong feature\"",[30,568,569],{},"\"Need to try different approach\"",[30,571,572],{},"\"Accidentally moved feature\"",[162,574,576],{"id":575},"redo-reapply-undone-change","Redo - Reapply Undone Change",[15,578,579],{},[33,580,529],{},[27,582,583,586,589],{},[30,584,585],{},"Steps forward through change history",[30,587,588],{},"Only available after Undo",[30,590,591],{},"Cleared when new change made",[15,593,594],{},[33,595,453],{},[167,597,600],{"className":598,"code":599,"language":172},[170],"1. Undo removes change\n2. Redo restores it\n3. Continue undoing/redoing as needed\n4. Make new change → clears redo stack\n",[174,601,599],{"__ignoreMap":176},[162,603,605],{"id":604},"conflict-resolution","Conflict Resolution",[15,607,608],{},"When two users edit the same feature/version concurrently, a conflict warning appears at the top of the map.",[15,610,611,612,615],{},"Click ",[33,613,614],{},"View conflict details"," to open a comparison view where you can accept or reject individual changes.  The history panel highlights which versions contributed each modification.",[162,617,619],{"id":618},"offline-write-queue","Offline Write Queue",[15,621,622,623,625,626,629,630,633,634,636],{},"Whether you're explicitly in ",[33,624,46],{}," mode or you simply lost connectivity mid-edit, write operations that can't reach the server are queued locally per-user. The queue persists across reloads. When the connection returns (or you toggle back to ",[33,627,628],{},"Work from server","), the queue flushes automatically; failures stay in the queue for a manual retry from the Version Manager. The queue only applies to ",[38,631,632],{},"write"," paths — reads are governed by the ",[33,635,46],{}," toggle described above.",[15,638,639],{},[38,640,641],{},"(network indicator screenshots: offline and online)",[162,643,645],{"id":644},"resync-reload-from-server","Resync - Reload from Server",[15,647,648],{},[33,649,650],{},"When to Use:",[27,652,653,656,659,662],{},[30,654,655],{},"Discard all uncommitted changes",[30,657,658],{},"Reload latest from server (others' work)",[30,660,661],{},"\"Undo everything\" nuclear option",[30,663,664],{},"Resolve corrupted local state",[15,666,667],{},[33,668,669],{},"⚠️ Warning:",[27,671,672,675,678],{},[30,673,674],{},"All uncommitted changes lost",[30,676,677],{},"Cannot be undone",[30,679,680],{},"Confirms before proceeding",[15,682,683],{},[33,684,685],{},"Safe Alternative:",[27,687,688,691],{},[30,689,690],{},"Submit first to preserve work",[30,692,693],{},"Then Resync to get latest",[19,695,697],{"id":696},"parallel-workflows-direct-vs-staging","Parallel Workflows: Direct vs Staging",[15,699,700],{},"Aptli supports two workflows for feature manipulation:",[162,702,704],{"id":703},"direct-manipulation-simple-edits","Direct Manipulation (Simple Edits)",[15,706,707],{},[33,708,709],{},"Best For:",[27,711,712,715,718,721],{},[30,713,714],{},"Moving single features",[30,716,717],{},"Quick property updates",[30,719,720],{},"Deleting features",[30,722,723],{},"Simple geometry adjustments",[15,725,726],{},[33,727,728],{},"How It Works:",[167,730,733],{"className":731,"code":732,"language":172},[170],"1. Select feature on map or in table\n2. Edit directly (drag, properties form)\n3. Change tracked automatically\n4. Submit when ready\n",[174,734,732],{"__ignoreMap":176},[15,736,737],{},[33,738,739],{},"Advantages:",[27,741,742,745,748],{},[30,743,744],{},"Fast, no intermediate steps",[30,746,747],{},"Familiar pattern (edit in place)",[30,749,750],{},"Minimal UI overhead",[162,752,754],{"id":753},"draw-staging-complex-operations","Draw Staging (Complex Operations)",[15,756,757],{},[33,758,709],{},[27,760,761,764,767,770],{},[30,762,763],{},"Importing external data (GeoJSON, ESRI files)",[30,765,766],{},"Complex geometry editing (reshape polygons)",[30,768,769],{},"Batch operations (create many features)",[30,771,772],{},"Reviewing before committing",[15,774,775],{},[33,776,728],{},[167,778,781],{"className":779,"code":780,"language":172},[170],"1. Load features to Draw (imports, Load to Draw button)\n2. Edit in Draw mode (reshape, split, merge)\n3. Select target layer\n4. Commit to features (tracked as uncommitted)\n5. Submit when ready\n",[174,782,780],{"__ignoreMap":176},[15,784,785],{},[33,786,739],{},[27,788,789,792,795,798],{},[30,790,791],{},"Staging area for review",[30,793,794],{},"Advanced geometry tools",[30,796,797],{},"Separate imports from real features",[30,799,800],{},"Undo at Draw level (before commit)",[15,802,803],{},[33,804,805],{},"Color Coding:",[27,807,808,814,820],{},[30,809,810,813],{},[33,811,812],{},"Blue"," - Your selected features loaded to Draw",[30,815,816,819],{},[33,817,818],{},"Orange"," - Conflicts from other users (read-only)",[30,821,822,825],{},[33,823,824],{},"Default"," - Imports and manually drawn features",[19,827,605],{"id":828},"conflict-resolution-1",[162,830,832],{"id":831},"how-conflicts-occur","How Conflicts Occur",[15,834,835],{},[33,836,837],{},"Spatial Conflicts:",[27,839,840,843,846],{},[30,841,842],{},"Two users add features in same location",[30,844,845],{},"Overlapping infrastructure placement",[30,847,848],{},"Competing network designs",[15,850,851],{},[33,852,853],{},"ID Conflicts:",[27,855,856,859,862],{},[30,857,858],{},"Same feature edited by multiple users",[30,860,861],{},"Different property changes",[30,863,864],{},"Geometry modifications",[162,866,868],{"id":867},"viewing-conflicts","Viewing Conflicts",[870,871,873],"h4",{"id":872},"team-conflicts-layer-manager-overlays","Team Conflicts (Layer Manager → Overlays)",[15,875,876,877,880,881,884],{},"The primary way to see what other people are working on in your area is ",[33,878,879],{},"Layer Manager → Overlays → Team Conflicts",". Click the refresh button to query the server for ",[38,882,883],{},"other users' draft versions"," (uploaded but not yet committed) that overlap your current viewport. Conflicting features render as orange on the map; pick a contributor's email from the dropdown to filter the view.",[15,886,887,890],{},[33,888,889],{},"What it queries",": server-side, all uncommitted versions in your viewport's bounding box. Committed versions are excluded by design — those are already in your map data, not \"in progress.\"",[15,892,893,896],{},[33,894,895],{},"What it tells you",": someone else is mid-edit on features you're about to touch. Coordinate before committing to avoid stepping on each other.",[15,898,899],{},"The viewport is captured at the time you click refresh. Pan or zoom the map and an \"Outdated\" indicator appears next to the section header — click refresh again to re-query for the new view.",[870,901,903],{"id":902},"load-conflicts-button-drawtoolbar-legacy-path","Load Conflicts Button (DrawToolbar) — legacy path",[15,905,906],{},"The DrawToolbar's Load Conflicts button is the older, draw-centric version of the same query. It pulls the same uncommitted-versions data and renders results as orange features inside the Draw layer (read-only — you can't commit someone else's draft). Useful when you're already in a draw flow; the Layer Manager → Overlays surface is the cleaner entry point for general \"what's everyone else doing here?\" checks.",[15,908,909],{},[33,910,911],{},"Workflow (Draw-toolbar variant):",[167,913,916],{"className":914,"code":915,"language":172},[170],"1. Click \"Load Conflicts\" in DrawToolbar\n2. Orange features appear (others' drafts)\n3. Review spatial overlap\n4. Adjust your features if needed\n5. Submit your changes (conflicts flagged)\n",[174,917,915],{"__ignoreMap":176},[162,919,921],{"id":920},"resolving-conflicts","Resolving Conflicts",[15,923,924],{},[33,925,926],{},"Option 1: Coordinate with Team",[27,928,929,932,935],{},[30,930,931],{},"See who's editing (conflict shows user email)",[30,933,934],{},"Discuss via chat/phone",[30,936,937],{},"Decide who submits first",[15,939,940],{},[33,941,942],{},"Option 2: Sequential Submission",[27,944,945,948,951],{},[30,946,947],{},"One user submits",[30,949,950],{},"Other user resyncs",[30,952,953],{},"Second user adjusts and submits",[15,955,956],{},[33,957,958],{},"Option 3: Manual Merge",[27,960,961,964,967],{},[30,962,963],{},"Load conflicts to see both versions",[30,965,966],{},"Create merged feature manually",[30,968,969],{},"Both users resync and accept merge",[19,971,973],{"id":972},"uncommitted-change-tracking","Uncommitted Change Tracking",[15,975,976,977,980],{},"Features you have created, edited, or imported — but not yet submitted — are tracked as ",[33,978,979],{},"uncommitted",". An orange badge on the Selected Features button shows the count of uncommitted changes in your current session.",[15,982,983],{},[33,984,985],{},"The badge updates in real time:",[27,987,988,991,994],{},[30,989,990],{},"Increases when you commit features from the Draw staging area",[30,992,993],{},"Resets to zero when you Submit",[30,995,996],{},"Resets to zero when you Resync (discarding all uncommitted changes)",[15,998,999],{},"Use the badge count as your reminder to Submit regularly. A high count means a lot of work could be lost if your browser closes before you submit.",[19,1001,1003],{"id":1002},"best-practices","Best Practices",[162,1005,1007],{"id":1006},"when-to-submit","When to Submit",[15,1009,1010],{},[33,1011,1012],{},"Recommended Times:",[27,1014,1015,1018,1021,1024,1027],{},[30,1016,1017],{},"End of each work session",[30,1019,1020],{},"After completing logical unit of work",[30,1022,1023],{},"Before switching between projects",[30,1025,1026],{},"When badge count feels \"too high\"",[30,1028,1029],{},"Before going offline (preserves as checkpoint)",[15,1031,1032],{},[33,1033,1034],{},"Avoid:",[27,1036,1037,1040,1043],{},[30,1038,1039],{},"Submitting incomplete work (confuses team)",[30,1041,1042],{},"Never submitting (risk of data loss)",[30,1044,1045],{},"Submitting constantly (creates version noise)",[162,1047,1049],{"id":1048},"working-from-device-strategy","Working from Device Strategy",[15,1051,1052],{},[33,1053,1054],{},"1. Prep Before You Lose Connectivity:",[167,1056,1059],{"className":1057,"code":1058,"language":172},[170],"1. Submit any pending changes (push to server)\n2. Toggle \"Work from device\" ON (prefetches the baseline)\n3. Edit on the device — auto save persists as you go\n4. When you regain connectivity, toggle OFF\n5. Submit your queued changes\n",[174,1060,1058],{"__ignoreMap":176},[15,1062,1063],{},[33,1064,1065],{},"2. Check for Conflicts:",[167,1067,1070],{"className":1068,"code":1069,"language":172},[170],"1. Use Team Conflicts (Layer Manager → Overlays) before major edits\n2. Coordinate with visible users\n3. Submit non-overlapping work first\n",[174,1071,1069],{"__ignoreMap":176},[15,1073,1074],{},[33,1075,1076],{},"3. Regular Checkpoints:",[167,1078,1081],{"className":1079,"code":1080,"language":172},[170],"1. Submit every 30-60 minutes when online\n2. Creates recovery points server-side\n3. Shares progress with the team\n",[174,1082,1080],{"__ignoreMap":176},[15,1084,1085],{},[33,1086,1087],{},"4. On a Shared Device:",[167,1089,1092],{"className":1090,"code":1091,"language":172},[170],"1. Each user's drafts are isolated locally — your work is yours\n2. Log out cleanly to avoid leaving auto-save firing under a stale session\n3. Log back in to pick up your own pending drafts\n",[174,1093,1091],{"__ignoreMap":176},[162,1095,1097],{"id":1096},"version-history-review","Version History Review",[15,1099,1100],{},[33,1101,1102],{},"Check Who Changed What:",[27,1104,1105,1108,1111],{},[30,1106,1107],{},"Version records show user, timestamp, operation",[30,1109,1110],{},"Compressed versions still reconstructible",[30,1112,1113],{},"Audit trail for compliance",[15,1115,1116],{},[33,1117,1118],{},"Rollback Process:",[167,1120,1123],{"className":1121,"code":1122,"language":172},[170],"1. Identify problem version\n2. Resync to before problem commit\n3. Redo changes correctly\n4. Submit new version\n",[174,1124,1122],{"__ignoreMap":176},[19,1126,1128],{"id":1127},"load-to-draw-feature","Load to Draw Feature",[162,1130,1132],{"id":1131},"purpose","Purpose",[15,1134,1135],{},"Enables complex geometry manipulation beyond simple drag-and-drop:",[27,1137,1138,1141,1144,1147],{},[30,1139,1140],{},"Reshape polygon boundaries",[30,1142,1143],{},"Split lines into segments",[30,1145,1146],{},"Merge adjacent areas",[30,1148,1149],{},"Advanced geometry operations",[162,1151,1153],{"id":1152},"how-to-use","How to Use",[15,1155,1156],{},[33,1157,1158],{},"From SelectedFeatures Table:",[167,1160,1163],{"className":1161,"code":1162,"language":172},[170],"1. Select rows in table (checkbox)\n2. Click \"Load to Draw\" button (pencil icon)\n3. Features appear in Draw (blue)\n4. Edit using Draw tools\n5. Select target layer\n6. Click commit button\n7. Features get _uncommitted flag\n8. Submit when ready\n",[174,1164,1162],{"__ignoreMap":176},[15,1166,1167],{},[33,1168,1169],{},"Styling:",[27,1171,1172,1175,1178],{},[30,1173,1174],{},"User selections: Blue (#3b82f6)",[30,1176,1177],{},"Conflicts: Orange (#f97316, read-only)",[30,1179,1180],{},"Imports: Default Draw colors",[162,1182,1184],{"id":1183},"advanced-operations","Advanced Operations",[15,1186,1187],{},[33,1188,1189],{},"Reshape Polygons:",[1191,1192,1193,1196,1199,1202],"ol",{},[30,1194,1195],{},"Load polygon to Draw",[30,1197,1198],{},"Click vertices to move",[30,1200,1201],{},"Add/remove points",[30,1203,1204],{},"Commit back to features",[15,1206,1207],{},[33,1208,1209],{},"Split Features:",[1191,1211,1212,1215,1218],{},[30,1213,1214],{},"Load line/polygon to Draw",[30,1216,1217],{},"Use Draw tools to create split",[30,1219,1220],{},"Commit as separate features",[15,1222,1223],{},[33,1224,1225],{},"Merge Areas:",[1191,1227,1228,1231,1234,1237],{},[30,1229,1230],{},"Load multiple polygons to Draw",[30,1232,1233],{},"Delete boundaries between them",[30,1235,1236],{},"Create single merged polygon",[30,1238,1239],{},"Commit result",[19,1241,1243],{"id":1242},"troubleshooting","Troubleshooting",[162,1245,1247],{"id":1246},"changes-not-saving","\"Changes Not Saving\"",[15,1249,1250],{},[33,1251,1252],{},"Check:",[27,1254,1255,1258,1261],{},[30,1256,1257],{},"Uncommitted badge count increasing?",[30,1259,1260],{},"Submit button active?",[30,1262,1263],{},"Browser console for errors?",[15,1265,1266],{},[33,1267,1268],{},"Solution:",[27,1270,1271,1274,1277],{},[30,1272,1273],{},"Verify network connectivity",[30,1275,1276],{},"Check browser storage not full",[30,1278,1279],{},"Submit to persist changes",[162,1281,1283],{"id":1282},"lost-my-changes-after-reload","\"Lost My Changes After Reload\"",[15,1285,1286],{},[33,1287,1288],{},"Cause:",[27,1290,1291,1298,1301,1304],{},[30,1292,1293,1294,1297],{},"Hard fences (close tab, hide tab, navigate away) flush pending diffs to device storage ",[38,1295,1296],{},"unless"," the session ended mid-flush.",[30,1299,1300],{},"Resync cleared in-progress diffs by replaying from the baseline.",[30,1302,1303],{},"Device storage was cleared (browser data wiped, \"clear all drafts\" used).",[30,1305,1306],{},"Logged in as a different user — drafts are scoped per-user, so they appear empty under a different account.",[15,1308,1309],{},[33,1310,1311],{},"Prevention:",[27,1313,1314,1317,1320],{},[30,1315,1316],{},"Submit before closing the browser to push to the server (the source of truth).",[30,1318,1319],{},"Trust auto save for in-session work — it survives reloads, but server-side history only persists what you Submit.",[30,1321,1322],{},"On a shared device, log out cleanly, and log back in as yourself.",[162,1324,1326],{"id":1325},"conflict-wont-resolve","\"Conflict Won't Resolve\"",[15,1328,1329],{},[33,1330,1331],{},"Steps:",[1191,1333,1334,1337,1340,1343,1346],{},[30,1335,1336],{},"Load Conflicts to see other version",[30,1338,1339],{},"Contact other user",[30,1341,1342],{},"One user Resyncs",[30,1344,1345],{},"Modify and Submit again",[30,1347,1348],{},"Second user Resyncs and continues",[162,1350,1352],{"id":1351},"undoredo-not-working","\"Undo/Redo Not Working\"",[15,1354,1355],{},[33,1356,545],{},[27,1358,1359,1362,1365],{},[30,1360,1361],{},"Only in-session changes",[30,1363,1364],{},"Cleared on page reload",[30,1366,1367],{},"Cannot undo submitted changes",[15,1369,1370],{},[33,1371,1372],{},"Workaround:",[27,1374,1375,1378,1381],{},[30,1376,1377],{},"Resync to before problem commit",[30,1379,1380],{},"Redo changes correctly",[30,1382,1383],{},"Submit new version",[19,1385,1387],{"id":1386},"related-guides","Related Guides",[27,1389,1390,1397,1404,1410],{},[30,1391,1392,1396],{},[239,1393,1395],{"href":1394},"/guide/field-operations/","Field Operations Overview"," - GIS features and workflows",[30,1398,1399,1403],{},[239,1400,1402],{"href":1401},"/guide/field-operations/schematics/","Schematics"," - Relationship diagram version management",[30,1405,1406,1409],{},[239,1407,1408],{"href":241},"Work Fulfillment"," - Tasks vs work orders versioning",[30,1411,1412,1416],{},[239,1413,1415],{"href":1414},"/guide/field-operations/mobile-pwa/","Mobile PWA"," - Mobile field workflows including Work from device",{"title":176,"searchDepth":1418,"depth":1418,"links":1419},2,[1420,1421,1422,1427,1428,1429,1430,1440,1444,1449,1450,1455,1460,1466],{"id":21,"depth":1418,"text":22},{"id":65,"depth":1418,"text":66},{"id":154,"depth":1418,"text":155,"children":1423},[1424,1426],{"id":164,"depth":1425,"text":165},3,{"id":179,"depth":1425,"text":180},{"id":246,"depth":1418,"text":247},{"id":311,"depth":1418,"text":312},{"id":363,"depth":1418,"text":364},{"id":390,"depth":1418,"text":391,"children":1431},[1432,1433,1434,1435,1436,1437,1438,1439],{"id":394,"depth":1425,"text":395},{"id":468,"depth":1425,"text":469},{"id":495,"depth":1425,"text":496},{"id":523,"depth":1425,"text":524},{"id":575,"depth":1425,"text":576},{"id":604,"depth":1425,"text":605},{"id":618,"depth":1425,"text":619},{"id":644,"depth":1425,"text":645},{"id":696,"depth":1418,"text":697,"children":1441},[1442,1443],{"id":703,"depth":1425,"text":704},{"id":753,"depth":1425,"text":754},{"id":828,"depth":1418,"text":605,"children":1445},[1446,1447,1448],{"id":831,"depth":1425,"text":832},{"id":867,"depth":1425,"text":868},{"id":920,"depth":1425,"text":921},{"id":972,"depth":1418,"text":973},{"id":1002,"depth":1418,"text":1003,"children":1451},[1452,1453,1454],{"id":1006,"depth":1425,"text":1007},{"id":1048,"depth":1425,"text":1049},{"id":1096,"depth":1425,"text":1097},{"id":1127,"depth":1418,"text":1128,"children":1456},[1457,1458,1459],{"id":1131,"depth":1425,"text":1132},{"id":1152,"depth":1425,"text":1153},{"id":1183,"depth":1425,"text":1184},{"id":1242,"depth":1418,"text":1243,"children":1461},[1462,1463,1464,1465],{"id":1246,"depth":1425,"text":1247},{"id":1282,"depth":1425,"text":1283},{"id":1325,"depth":1425,"text":1326},{"id":1351,"depth":1425,"text":1352},{"id":1386,"depth":1418,"text":1387},"Edit GIS features, layers, and schematics on your device, with auto-save to the device while you work, and submit when you're ready. Changes are staged locally, conflict-checked before going live, and preserved as permanent version history.","md",{},true,"/en/user/field-operations/version-management",{"title":5,"description":1467},"en/user/field-operations/version-management","rUQIize9EbxEVgTRJedhAqpR_z4XeLF8enoaHOaWkek",1780538309339]