Creates, updates and deactivates accounts and groups on external systems (SCIM 2.0, Nextcloud, Mailman 3) according to Admidio's members and roles.
provisioningA plugin for Admidio 6.0 and later that creates, updates, deactivates and deletes user accounts and groups on external systems according to Admidio's members and roles. Changes in Admidio reach the connected systems within seconds. It comes with three connectors:
Other plugins can add further connectors.
No releases have been published yet.
As administrator, go to Admidio's plugin manager (Admidio 6.0 or later and PHP 8.2 or later required, PHP extension curl needed), select “Add plugin” and upload the plugin ZIP file, then enable the plugin. The plugin creates its database tables when it is installed. Removing the plugin deletes them, including the record of which remote account belongs to which Admidio user – disconnect or clean up the targets first.
Changes in Admidio reach the targets at the end of the request that made them. Membership start and end dates, which Admidio only knows as whole days, take effect with the daily reconciliation shortly after midnight. Run Admidio's maintenance jobs hourly, one line per organization; the plugin registers its job provisioning:sync there:
15 * * * * php /path/to/admidio/admidio maintenance:run --organization=SHORTNAME --no-interaction --quiet
The command needs an acting organization administrator, for example through $gCliDefaults in adm_my_files/cli-config.php. Without cron the first page request after midnight starts the reconciliation; ended memberships then stay active on the target until somebody opens Admidio.
The menu entry Provisioning (below Extensions, visible to administrators) lists the targets. A target has
userName) and the attributes taken from profile fields;The status page of a target shows its queue, the last runs and every account or group that needs attention, and offers Synchronize now, Verify now, Test connection and Retry.
allowed_no_password_confirmation_ranges in Nextcloud's config.php (behind a reverse proxy, the proxy also has to be in trusted_proxies):'allowed_no_password_confirmation_ranges' => ['192.0.2.10/32'],
externalId) are never touched.Administration → Preferences → Login & security → Provisioning
| Setting | Default | Meaning |
|---|---|---|
| Seconds per page request for synchronization | 5 | After a change, the targets are updated after the page has been delivered, for at most this many seconds. 0 leaves the synchronization to cron. |
| Allow targets in private networks | off | Allows target systems with private or reserved IP addresses and plain HTTP. Only switch this on if the target system is in your own network. |
| Notify administrators about problems | on | Sends the administrators of the organization at most one email per target and day if accounts or groups need attention. |
| Command | Purpose |
|---|---|
provisioning:sync [–target=UUID] [–full] [–verify] [–budget=S] [–dry-run] | Run what is due (for cron) |
provisioning:status | Targets, queues and last runs; exit code 3 if a target is paused or items need attention |
provisioning:test –target=UUID | Test the connection |
provisioning:queue –target=UUID [–retry] [–clear –yes] | Items that need attention; retry or clear |
provisioning:deprovision –target=UUID –yes | Delete what Admidio created on the target system, then the target |
A connector extends AdmidioPlugin\Provisioning\Connector\Connector and is registered through the filter provisioning_connectors. See the source code for a complete example and a small SCIM mock server for trying the plugin out.