Skip to content
Octo × Migration PT Request an assessment

Octo for moving off ArcGIS and MapGuide

Swap piece by piece. Turning off the old one is your call.

GDAL reads and writes file geodatabases since version 3.6, QGIS reads ArcGIS REST services and MapGuide already publishes WMS and WFS: you can migrate gradually, with the old system still running. Octo builds the inventory, converts the collection with parity measured layer by layer, compares the published map pixel by pixel and extracts scales and filters from the old styles. What migrates, what stays and when to switch off stay with the technical lead, the cartographer and management.

Three crossing lanes from left, proprietary, to right, open source: data from a file geodatabase to GeoPackage and PostGIS; ArcGIS Server and MapGuide services to GeoServer; ArcPy and mapagent scripts to PyQGIS and GDAL; in the middle of each lane, a checkpoint with the result: 12 of 14 layers at parity, 14 of 16 map boxes identical, 9 of 11 scripts with the same result; below, what doesn't fit in the target stays with the old system: topology, annotation and attribute rules PROPRIETARY REVIEW OPEN SOURCE cadastro.gdb lotes · polygon quadras · polygon … 14 layers parity by layer 12 / 14 OK 2 to review GeoPackage + PostGIS ogr2ogr, OpenFileGDB GDAL ≥ 3.6 Old services ArcGIS Server · REST MapGuide · WMS/WFS 7 consumers inventoried GetMap pixel by pixel 14 / 16 2 boxes GeoServer WMS · WFS · OGC API same layer names running alongside the old one until the approved cutover Scripts arcpy.analysis.Buffer arcpy.analysis.Clip mapagent GETMAPIMAGE … 11 routines same result? 9 / 11 OK 2 with differences PyQGIS · GDAL native:buffer native:clip WMS GetMap qgis_process DOESN'T FIT IN THE TARGET WITHOUT A SEPARATE PROJECT geodatabase topology · annotation · attribute rules · network · the lead decides FICTITIOUS DATA
Illustration: the three crossings, data, services and scripts, with the check in the middle; fictitious data.
GDAL OpenFileGDB3.6file geodatabase writing since this version
QGIS3.44.15LTR; latest 4.2.3, GPL-2.0
GeoServer3.0.2stable, GPL 2.0
Sources12listed at the end of the page
01

What Octo does in a migration.

Six possible deliverables, taken from the survey. All of them start by reading the old system without changing anything, and none switches anything off: the cutover is your team's decision.

Inventory of what is used

Layers, domains, relationships, scripts, services and who consumes each service; what has an open-source equivalent and what doesn't.

Deliverable: inventory in CSV + list of decisions

FileGDB to GeoPackage and PostGIS

ogr2ogr layer by layer through the OpenFileGDB driver, with a log, without reprojecting behind the scenes.

Deliverable: converted collection + log per layer

Measured parity

Count, extent, sum of areas, invalid geometries and attribute hash, source against target, with an approved tolerance.

Deliverable: parity report by layer

Published map compared

The same GetMap on the old server and on GeoServer, box by box, with the fraction of differing pixels; a suspicious box goes to the cartographer.

Deliverable: comparison grid + side-by-side images

Style scales and filters

Reads the MapGuide Layer Definitions (VectorScaleRange, MinScale, MaxScale, Filter) and compares them with the QGIS project.

Deliverable: scales CSV + differences

Rewritten scripts

ArcPy and mapagent become PyQGIS, qgis_process, GDAL and WMS/WFS, with the result compared to the old script's.

Deliverable: new script + result comparison
02

Eight arms, a crossing with no silent loss.

The same Octo cycle, applied to migration. Each arm has a narrow role; people decide whether to migrate, what stays and when to switch off.

  1. Discovery

    Inventories what is used

    Licenses in use, layers, scripts, services, consumers of each service and features with no open-source equivalent.

  2. Data

    Maps types and rules

    Domains, relationships, subtypes and fields to GeoPackage or PostGIS; what doesn't fit is listed, not discarded.

  3. Security

    Looks at what changes place

    Credentials kept out of scripts, services exposed on the new server, personal data in the collection and who gains access to it.

  4. Architecture

    Proposes the phases

    Inventory, pilot, data, services, desktop and scripts, cutover; and what stays on proprietary, if that's the case.

  5. Development

    Converts and rewrites

    Conversions with a log, scripts rewritten in PyQGIS and GDAL, extraction of scales and filters from the old styles.

  6. Review

    Measures parity

    Count, areas and hash per layer; map compared pixel by pixel; each script's result matching the old one.

  7. Release

    Cutover only with approved criteria

    The old server stays up until each consumer confirms; it is switched off on the approved date.

  8. Documentation

    Records the crossing

    What migrated, what stayed and why, accepted tolerances and who approved each step.

Octo works with read access and as support. It does not decide to migrate, switch off servers, choose a CRS transformation or approve maps.

03

Equivalents: ArcGIS and MapGuide → open source.

The degree is this survey's assessment of how much of the work a tool solves, not a published measure.

OriginIn proprietaryIn open sourceDegreeNote
ArcGISArcGIS Pro / ArcMapQGIS (LTR in production)HighLayouts and atlases exist
ArcGISArcPy, ModelBuilderPyQGIS, qgis_process, GDAL, GeoPandas, QGIS model designerHighRewrite with compared results
ArcGISFile geodatabaseGeoPackage or PostGISHighOpenFileGDB reads and writes since GDAL 3.6
ArcGISDomains and relationshipsGPKG domains and relationships, or constraints and keys in PostGISMediumGPKG: domains since 3.3, relationships 3.6/3.7
ArcGISEnterprise geodatabasePostgreSQL + PostGISHighVersioning and replicas do not migrate as they are
ArcGISTopology, annotation, attribute rulesPostGIS topology, labels, triggersLowSeparate project
ArcGISArcGIS Server / EnterpriseGeoServer, QGIS Server, MapServerHigh (OGC)Esri REST is not OGC: clients change
ArcGISField Maps, Survey123QField, Mergin Maps, ODK, KoboToolboxMediumField data collection
ArcGIS.lyrx, .mxd, .aprx symbologyQML, SLD; SLYR (limited free edition or paid)LowCartographer approves
MapGuideMapGuide / AIMS serverGeoServer, QGIS Server, MapServerHigh (OGC)MapGuide already publishes WMS and WFS
MapGuideMap DefinitionQGIS projectMediumGroups and order redone
MapGuideLayer Definition (XML)QML or SLDMediumScales and filters extracted by script
MapGuideFDO Feature Source in a database or SHPDirect connection to the same sourceHighThe data often doesn't need to migrate
MapGuideFusion / AJAX ViewerOpenLayers, Leaflet, MapLibre GLMediumWeb maps and tiles
MapGuidemapagent API, Web APIWMS/WFS, OGC API, PyQGISLowCalls rewritten
MapGuideGETPLOT (DWF), QuickPlotQGIS layouts and atlases in PDFHighBatch printing by script
04

From inventory to cutover, without skipping a step.

Three steps. Each one only makes sense after the previous one has shown results on your team, and stopping at the first is already a valid answer.

A proposal, not a promise

1 Today

Inventory and equivalents

Octo reads the old system and says what is used, what has an open-source equivalent and what doesn't.

  • Layers, scripts and services
  • Consumers of each service
  • Features with no equivalent
Benefit: decide to migrate, or not, with numbers in hand
2 Next

End-to-end pilot

One area or one project migrated with measured parity, a compared map and rewritten scripts.

  • Parity report
  • Map comparison grid
  • Estimate for the rest of the collection
Benefit: known risk before the full migration
3 Later

Batch migration and cutover

Collection in batches with a report, services running side by side, consumers migrated one by one and cutover by the approved criteria.

  • Batches with parity
  • Servers running side by side
  • Record of what stayed
Benefit: a crossing with no silent loss
05

Confirmed in a source.

Each point below has a source published by the project or by the organization responsible for the standard. The sources are in the next section.

5

points with a published source, each with its reference shown alongside.

ConfirmedOpen FileGDB in GDAL
"Write and update capabilities are supported since GDAL >= 3.6"; raster since 3.7, relationships since 3.6, domains since 3.3.Source: OpenFileGDB driver page, gdal.org
ConfirmedQGIS reads ArcGIS REST
The QGIS documentation describes connections to ArcGIS REST servers with feature, map and image services, which allows migrating the desktop before the server.Source: QGIS 3.44 manual, opening data
ConfirmedTarget versions
QGIS 4.2.3 and LTR 3.44.15; GDAL 3.13.3 (Aug 18, 2026); GeoServer 3.0.2 stable, GPL 2.0; GeoPackage OGC standard 1.4.0.Source: qgis.org, OSGeo/gdal, geoserver.org, geopackage.org
ConfirmedMapGuide 4.0
Released on Oct 12, 2025, LGPL 2.1, with WMS and WFS.Source: mapguide-users list and OSGeo page
ConfirmedSLYR free and paid
There is a SLYR Community Edition plugin, free and with limited functionality; the full version has a paid license.Source: north-road.com/slyr and github.com/north-road/slyr
06

What Octo does and what stays with you.

Octo prepares everything, but it does not sign. The document of record stays with whoever is accountable for it.

Octo prepares

Surveys, calculates, organizes and produces the documents: spreadsheets, reports, maps and drafts.

Deliverable: material ready to check

Your team checks

The licensed professional checks what Octo delivered before signing. If something doesn't add up, it goes back to Octo with the correction.

Step: review by the signer

The signer

Octo does not sign. Projects, technical reports, ART/RRT, accountability reports and any official document are still signed by the company's or agency's licensed professional: here, the technical lead for the map or the survey.

Signature: technical lead for the map or survey
07

Sources.

Official project documentation and pages, repositories, the MapGuide list and the Layer Definition schema, consulted on Oct 31, 2026.

Your migration, measured layer by layer.

The assessment starts with an inventory of what the old system has and what is actually used, without changing anything. You get the equivalents, what has no equivalent and the decisions only your team makes, and you decide with them in hand.