Migrate in measured steps.
Automate what can be proven.
Inventory the estate. Import supported Esri services. Convert supported source. Validate client behavior.
Run old and new side by side before cutover. GeoServer has a bounded public catalog path: scan, dry-run,
then apply workspaces, layer groups, and PostGIS-backed layers whose target tables already exist; data copying and unsupported stores remain manual. The public JavaScript prerelease and Python source preview include
honua-migrate codemods. Honua does not yet ship an automated .NET or .NET MAUI source
rewriter; those applications follow a guided reimplementation path with adapters.
One migration playbook. Automation where evidence supports it.
Automate supported transformations, report every change, and flag the rest for review. JavaScript is a public npm prerelease and Python is a source preview. .NET and MAUI are source-preview SDKs with guided migration paths because Honua does not yet ship automated source rewriters for them.
- import paths & barrel re-exports
- FeatureLayer · MapView · Map constructors
- portal references & webmap content
- renderer / symbol / popup wiring
- Esri.ArcGISRuntime usings → Honua namespaces
- Map · MapView · GraphicsOverlay ctors
- FeatureTable · ServiceFeatureTable
- PortalItem & WebMap loaders
- detects ArcPy calls in one Python source file
- classifies recognized tools as translatable, manual review, or unsupported
- translates only registry-listed, server-executable calls to OGC API Processes payloads
- emits parity evidence for review before any translated plan is run
- MapView / SceneView → native display adapter
- ServiceFeatureTable → Honua query client
- GeodatabaseSyncTask → planned GeoPackage offline-sync path
- FeatureForm / OpenRosa → private-beta connected field schemas; offline workflows planned
Here's what one of those rewrites looks like.
A representative honua-migrate codemod diff. Where the compatibility package supports a call site, familiar class shapes reduce code churn while Honua replaces the runtime, transport, and infrastructure underneath. The codemod does not repoint service URLs; the unchanged ArcGIS URL below keeps that separate migration step visible.
Lower switching cost with compatibility + checks.
| Path | Migration support | Adoption value |
|---|---|---|
| Esri service import | Documented imports accept queryable FeatureServer and MapServer service roots, copy selected layers into PostGIS, and publish them. Unsupported renderers, external symbols, attachments, and other flagged content require manual follow-up. | Existing Esri clients validate against Honua before any cutover. |
| App conversion (supported SDK conversion) | The public JavaScript prerelease rewrites supported ArcGIS JS imports, FeatureLayer / MapView / Query / reactiveUtils constructors, and call sites to @honua/sdk-esri-compat. Python exposes a source-preview scan / translate / run flow. .NET and MAUI use guided reimplementation plus adapters; no automated source rewriter is available for those paths. |
Supported call sites can be rewritten automatically. Each run reports its automation ratio; remaining call sites carry a TODO(honua-migrate) marker for review. |
| GeoServer service import | The public path scans and dry-runs a GeoServer REST catalog, then explicitly applies bounded catalog entries for existing target PostGIS tables. It does not copy feature data; unsupported stores, missing tables, external graphics, and lossy SLD conversions remain manual-review evidence. | Load data separately, review every apply step, and validate WMS/WFS/WMTS clients while the existing GeoServer service remains available for rollback. |
| Standards & data ingestion | Available paths cover documented OGC and GeoServices surfaces plus supported files, databases, and object-storage formats; coverage varies by source and operation. | Move service by service, dataset by dataset. No big bang. |
| Parity checks | Each JavaScript codemod run reports detected source usage, rewritten and manual-review call sites, TODO markers, and readiness gates. It does not execute behavioral response comparisons. | Run client and response-behavior tests separately; estate-wide parity reporting remains planned. |