Repository navigation
Walkthroughs
Screenshots are captured in a reference environment and may show sample data or a theme that differs from your tenant.
Three tasks, in the order you will do them. Each is complete on its own.
Who: platform administrator · Prerequisite: a Fuuz tenant dedicated to one Plex PCN
- Download
plex-keyring-schema-0.6.0.tgzfrom the repo. The.fuuzfile beside it is the same schema exported from a live tenant — either works. - In Fuuz, open Package Management and import the archive.
- Wait for the install to complete. It creates 182 data models and deploys them.
Verify: query any model — plexPart, plexCustomer, plexSupplier — and confirm it exists and returns an empty result rather than an error.
If it fails on "a record already exists": the installer creates models, it does not upsert them. A tenant that already carries a plex* model from an earlier install must have it removed first. This is the most common install failure and it is not recoverable by re-running.
Who: platform administrator · Why: two things must exist before a single row can be written
Every row carries sourceSystemId as a real, enforced relation to ExternalSystem. Until that row exists, every insert is refused — on the first row, not the millionth.
Create an ExternalSystem record identifying this Plex instance, for example code PLEX-HOU.
Verify: the record is visible in the External System list. A mistyped id will now be rejected at write time rather than discovered later under a name nobody recognises.
If you are also installing the extraction flows, they read the PCN and source system from tenant configuration and refuse to run until both are set. Loading a million rows under the wrong identity is not recoverable by re-running, so the flows decline rather than guess.
Verify: plexKeyringGets.site.pcn and .sourceSystemId are both populated.
Who: integration engineer · Prerequisite: extraction flows installed (separate package)
Load order is a correctness requirement, not a preference. Foreign keys target id and are enforced, so an endpoint whose parent has not loaded yet is a rejected write — and rows go up in batches of 500, so one bad reference fails the whole batch.
Each endpoint publishes a loadLayer. Run layers in ascending order:
| Layer | Endpoints | Contains |
|---|---|---|
| 0 | 60 | Things nothing else depends on — parts, buildings, users, suppliers |
| 1 | 16 | First dependants |
| 2 | 31 | |
| 3 | 35 | |
| 4 | 30 | |
| 5 | 9 | |
| 6 | 1 | Deepest — everything it references is already loaded |
There are no cycles in the relation graph, so a total order exists and every child sits strictly after its parents.
Verify: after each layer, check row counts moved. A flow returning SUCCESS means a request completed, not that data arrived — a disabled endpoint, a sub-resource whose parent is empty, and an upsert that matched an existing row all return success and land nothing. The row count is the evidence.
Who: integration engineer
All 182 endpoints ship disabled. The package carries full coverage so nothing has to be rebuilt when a site needs one more object; the site turns on only what it uses.
- Open the
plexKeyringGetsapplication configuration. - Set
enabled: trueon the endpoints you need. - Leave the rest off.
Each entry also carries pageSize and intervalMinutes per endpoint, because a part master and a container feed do not deserve the same cadence.
Verify: the endpoint's model gains rows on the next run. If it returns success and lands nothing, check that it is enabled — that is the usual cause.
Customer & Partner Guide v0.6.0