Repository inventory
Lists everything in Library:// with ENUMERATERESOURCES, groups it by type (Feature Source, layer, map, layout, tile set) and records the server version with GETSITEVERSION.
Octo for MapGuide Maestro and automation
MapGuide Maestro is at 6.0m13 and already includes what automation needs: MgTileSeeder to seed tiles from the command line on Windows and Linux, the Maestro API on NuGet to read, validate and rewrite resources in batch, and an IronPython console inside the application. Octo inventories the repository, maps what depends on what, repoints layers in a staging folder and checks before any swap. Production, load windows and deletions stay with the server administrator.
Six possible deliverables, drawn from the assessment. All of them start by reading, write only to a staging folder and go to review by the server administrator.
Lists everything in Library:// with ENUMERATERESOURCES, groups it by type (Feature Source, layer, map, layout, tile set) and records the server version with GETSITEVERSION.
For each Feature Source, who uses it (ENUMERATERESOURCEREFERENCES): layers, maps and layouts. Shows the orphans, which only a person can decide to delete.
Repoints Layer Definitions from old Feature Sources to new ones (SQL Server to PostGIS, server to server) based on an approved mapping, with a diff per layer and a copy in staging.
Deliverable: layers repointed outside productionRuns MgTileSeeder by neighborhood or district on the XYZ tile set and over the whole classic tile set (in the current code the mapguide verb accepts an area extent but does not apply it), with low parallelism, an overnight window and retries only for the tiles that failed (mapguide_replay, xyz_replay).
Validates layers and maps in batch with the same validators Maestro uses (ResourceValidatorSet) and returns a CSV of errors and warnings, with an exit code for a scheduler or CI.
For those who already work in the application: scripts for the IronPython console that use the open connections and ask on screen before every write.
Deliverable: short, commented script with confirmationThe same Octo cycle, applied to maintaining a MapGuide server. Each arm has a narrow role; the people promote to production, set the acceptable load and delete resources.
Version of the server, Maestro and MgTileSeeder on each machine, the Library:// inventory and what depends on what.
Schema of the old and new Feature Sources and the columns used in each layer's filter, label and theme.
Read-only user for the inventory, passwords out of code and URLs, what Anonymous can see and personal data (LGPD) in public layers.
mapagent with curl, the Maestro API in .NET or the IronPython console; staging folder; order of the swap and the seeding.
Shell, Python and C# with dry run by default, a log, writes only to staging and the source of every syntax noted in the file.
Batch validation, diff per layer, before-and-after images of the same map and tile counts. No error is not the same as checked.
Only with your OK, it delivers the staging folder and the report. The administrator promotes to production.
Approved mapping, versions, commands used, agreed windows and who approved each step. What holds on one server does not automatically hold for another.
Octo works with read access and in a support role. It does not write to production, delete resources, choose the load window or replace the server administrator or the technical lead for the map's content.
The criteria Octo uses to choose, with the documentation for the installed version.
| Task | Path | Note |
|---|---|---|
| Find out what is in the repository | ENUMERATERESOURCES with DEPTH=-1 | Nothing is changed |
| Who depends on a resource | ENUMERATERESOURCEREFERENCES or EnumerateResourceReferences | External applications don't show up |
| Repoint layers | XML <ResourceId> and <FeatureName>; or ISubLayerDefinition.ResourceId | First in a staging folder |
| Change a source's connection | IFeatureSource.SetConnectionProperty | Credentials outside the XML when possible |
| Validate everything | ResourceValidatorSet.Validate | Same validators as Maestro |
| Move without breaking | MoveResourceWithReferences, CopyFolderWithReferences | Check against the inventory afterward |
| Move to another server | .mgp package via Maestro or Site Administrator | Packages of hundreds of MB: through the server |
| Seed tiles | MgTileSeeder mapguide or xyz | --failed-requests and *_replay |
| Published static map | Maestro.MapPublisher.exe publish | Review the data and keys that go along |
| Script with the app open | IronPython console, app object | Confirms on screen before writing |
Three steps. Each one only makes sense after the previous one has shown results on your team.
A proposal, not a promise
Octo shows what is in the repository, what depends on what and what validation flags, without touching anything.
Layers repointed in staging from an approved mapping, and seeding by area with retries for failures.
Validation runs on a scheduler and alerts when a resource breaks; seeding follows the agreed window.
Every point below has a source published by OSGeo (project page, official mailing lists, downloads area), by the official repository or by Autodesk. The examples are scripts, not executions. The sources are in the next section.
4
points with a published source, each with its reference shown alongside.
LGPL-2.1-only on NuGet and "2.1 or later" in the source header; the API targets .NET Standard 2.0 and is pre-release only.Source: the project's repository, NuGet and source codeOcto prepares everything, but it does not sign. The document of record stays with whoever is accountable for it.
Gathers, calculates, organizes and generates the documents: scripts, inventories, reports and maps.
Deliverable: material ready to checkThe 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 signerOcto does not sign. Designs, technical reports, ART/RRT, accountability reports and any official document are still signed by the licensed professional of the company or agency: here, the technical lead for the map or system.
Signature: technical lead for the map or systemMapGuide Maestro repository, releases, guides and code, the NuGet registry and the OSGeo mailing list, consulted on Oct 31, 2026.
The assessment starts with an inventory of the repository and a map of what depends on what, without writing anything. You get the list of what is broken, what can be swapped in batch and the questions only your team can answer, and you decide with it in hand.