User guide

PSA Migration and GLPI Integration

Looking for what it does rather than how to use it? Read the Switching from another PSA overview .

Audience: MSP and organization administrators moving onto Solidlio from an existing PSA or ITSM tool, and anyone running a live GLPI alongside Solidlio. Scope: the GLPI integration, and the CSV import paths for assets and products.


What it is

Solidlio connects to a GLPI instance over its REST API and keeps the two systems in step: tickets sync in both directions, and assets, software, contacts and suppliers sync from GLPI into Solidlio. You choose which entity types sync, which GLPI entity maps to which Solidlio organization, which GLPI ITIL category routes to which Solidlio queue, and which system wins when both have changed a record.

This is a live integration, not a one-shot migration. It is designed to run continuously. If your goal is to leave GLPI entirely, run the integration until Solidlio holds everything you need, then disconnect.

Read section 8 before you plan a migration. Tickets, companies, contacts, contracts and time entries from PSAs other than GLPI have no import path.


Concepts

ConceptWhat it is
IntegrationThe connection row. One per GLPI instance, owned by one organization, holding encrypted credentials.
GlpiConfigPer-connection settings: base URL, entity/location/queue/field mappings, per-entity sync config, detected GLPI version.
Entity mappingGLPI Entity → Solidlio Organization. Decides which tenant an imported record lands in.
Location mappingGLPI Location → Solidlio Location.
Queue mappingGLPI ITIL category → Solidlio TicketQueue. Drives ticket routing on import.
Field mappingPer-entity field pairings, for fields whose names differ between the two systems.
Source of truthPer entity type: glpi or solidlio. Decides which side wins on a conflicting change.
IntegrationSyncLogOne row per sync run: counts, duration, status, and the per-record error list.

Entity types and direction

This table is the whole scope of the integration. Nothing outside it syncs.

EntityGLPI sourceSolidlio targetDirection
AssetsComputer, Monitor, NetworkEquipment, Printer, Phone, PeripheralAssetInbound only
TicketsTicket, plus ITILFollowupTicket, TicketCommentTwo-way — see the limits below
SoftwareSoftware, plus SoftwareLicense sub-itemsSoftwareProduct, SoftwareLicenseInbound only
ContactsUserPerson + OrganizationMembership (CUSTOMER)Inbound only
SuppliersSupplierVendorInbound only

Ticket write-back has two limits you must plan around:

  1. It runs only during a full sync, and only when the tickets source of truth is set to solidlio. The scheduled 15-minute ticket job pulls from GLPI; it never pushes. Outbound changes therefore move at full-sync cadence, not in near-real time.
  2. It pushes four fields: subject, description, status and priority. Comments, assignees and time entries never leave Solidlio.

No network, IP or port data is synced in either direction.


Roles and permissions

There is no plan gate — the integration is available on every tier, including Free.

RoleCan configure and sync GLPI
platform administrator
MSP administrator
MSP technician
organization administrator
power user
CUSTOMER

Walkthrough — connecting GLPI

Before you start, in GLPI: enable the REST API (Setup → General → API), create an App token, and create a User token for a GLPI account with read access to the entities you intend to sync — plus write access to Tickets if you want write-back.

Your GLPI URL must be HTTPS. Solidlio refuses plaintext connections because the app token and user token are sent on every request. (Outside production, a private-network URL is allowed when CONNECTOR_ALLOW_PRIVATE_URLS is set; it logs a warning.)

  1. Open the integration — MSP portal: Integrations → GLPI. Org portal: Integrations → GLPI.
  2. Enter connection details — base URL, app token, user token. Solidlio runs a live connection test and reads back your GLPI version.
  3. Preview the data — the setup wizard’s Preview GLPI Data step calls GLPI for a sample of each entity type you enabled, so you can confirm you are pointed at the right instance before anything is written.
  4. Map entities — each GLPI entity to a Solidlio organization. You may only map organizations your account owns or manages; the API rejects anything else.
  5. Map locations and queues — GLPI locations to Solidlio locations, and GLPI ITIL categories to Solidlio ticket queues.
  6. Choose sync settings — per entity type: enabled, interval, and source of truth. Set field mappings where names differ.
  7. Run a full sync — the button returns immediately with a run id; the sync proceeds in the background. Watch it in Sync History.

Watching a sync

Sync History shows every run with record counts, duration, status and an expandable per-record error list. A run that fails partway still records what it processed. Re-running is safe — see below.

Re-running is safe

Every record is matched on (integrationId, entityType, externalId), and unchanged records are skipped by a content hash. Re-running a sync updates; it never duplicates.


Configuration reference

SettingWhat it doesIf unset
Base URLGLPI root, e.g. https://glpi.example.comRequired — connection fails
App token / User tokenGLPI REST credentials, encrypted at restRequired — connection fails
Entity mappingsGLPI entity → Solidlio organizationRecords land in the integration’s own org
Location mappingsGLPI location → Solidlio locationLocation left unset on imported assets
Queue mappingsGLPI ITIL category → Solidlio queueTickets import unqueued
Field mappingsPer-entity field pairsDefault field names are used
Per-entity enabledWhether that entity type syncsThat entity type does not sync
Per-entity syncIntervalScheduled cadence for that entityProvider default
Per-entity sourceOfTruthglpi or solidlio — who wins a conflictglpi

One exception worth knowing: source-of-truth is honoured for assets, tickets, contacts and suppliers. Software always takes GLPI as authoritative and overwrites the Solidlio record regardless of the setting.


Troubleshooting

What you seeCause
Connection rejected before any request is madeThe URL is http://. GLPI credentials travel on every call; use HTTPS.
Invalid organization IDs — not found or not in this accountAn entity mapping references an organization your account does not own or manage.
Queue mapping rejectedThe queue does not exist, or belongs to an organization outside your mapped entity set.
Connection test fails with no detailApp token or user token wrong, or the API is disabled in GLPI’s settings.
Full sync returns immediatelyExpected. It is queued; poll Sync History for progress.
Records import into the wrong tenantCheck entity mappings. Unmapped GLPI entities fall back to the integration’s own org.
Tickets import with no queueNo ITIL category mapping matched. Map the category, then re-run.
Software changes in Solidlio keep revertingExpected. Software always takes GLPI as authoritative regardless of source-of-truth.
Ticket edits in Solidlio never reach GLPIWrite-back needs tickets’ source of truth set to solidlio, and runs only on a full sync.

Migrating from a PSA that is not GLPI

Be clear-eyed about what exists today.

ConnectWise Manage, Autotask and Halo PSA do not have integrations. They appear in the catalogue marked Coming Soon, and any attempt to set one up is refused by the server before any credential is stored. Do not plan a migration around them.

What you can actually import today:

DataPathNotes
TicketsGLPI integration onlyNo import path from any other system
AssetsGLPI integration, or CSV importCSV: up to 1,000 rows per batch, with a dry-run mode and per-row errors
SoftwareGLPI integration
ContactsGLPI integrationCreates a Person and a CUSTOMER portal membership
SuppliersGLPI integrationImports as Vendor
ProductsCSV import
CustomersQuickBooks Online importProvisions managed-client tenants
Companies, contracts, time entriesnoneNo import path exists

Two CSV caveats worth knowing before you rely on them:

  • The asset importer has no upsert key. A re-run after a partial failure creates duplicates rather than updating. Import once, and verify before re-running.
  • The product importer aborts the whole batch on a duplicate SKU. Deduplicate your file first.

For anything else, the REST API is the supported route.


Limits and known behaviour

  • Ticket write-back is four fields, full-sync cadence, and requires sourceOfTruth: solidlio.
  • Assets, software, contacts and suppliers are inbound only.
  • Software ignores source-of-truth and always takes GLPI as authoritative.
  • No network, IP or port data syncs.
  • GLPI ticket tasks are not synced (follow-ups are, as comments).
  • Attachments, projects, contracts and KB articles are not synced.
  • The integration is not plan-gated; every tier has it in full.
  • If the background queue is unavailable, a full sync still runs but detached — it is not retried and does not survive a service restart.

Questions this guide did not answer?

Ask us. You will get a reply from someone who uses the product every day.

Book a demo Contact us

A 30-minute walkthrough against your own workflow. No slides.