Connecting Applications to OpenCrowd¶
This guide explains how to connect xWiki, OpenProject, and Nextcloud to OpenCrowd for bidirectional user, group, and permission synchronization.
Overview¶
OpenCrowd connects to applications through their REST APIs. Each connector needs:
| What | Why |
|---|---|
| Base URL | Where the application is hosted |
| Admin username | An account with API access and user management permissions |
| Password / API key | Authentication for API calls |
Once connected, OpenCrowd syncs users, groups, and permissions every 30 minutes automatically. You can also trigger manual sync at any time.
Prerequisites¶
Before connecting, ensure:
- OpenCrowd is running (see the Quick Start)
- You have admin-level access to the target application
- The target application is accessible from where OpenCrowd is running (network/firewall)
- You're logged into OpenCrowd as a user with the
manage_connectorsrole
Connecting xWiki¶
Step 1: Create an API user in xWiki (recommended)¶
It's best practice to create a dedicated user for OpenCrowd rather than using your personal admin account.
- Log into your xWiki instance as admin
- Go to Administration → Users → Create User
- Username:
opencrowd-sync - Give it Admin rights (needed to read/write users, groups, and page permissions)
Step 2: Add the connector in OpenCrowd¶
- In OpenCrowd, go to Applications (left sidebar)
- Click Add Connector (or the + button)
- Fill in:
- Name: e.g. "Company xWiki"
- Type: xWiki
- Base URL: Your xWiki URL (e.g.
https://xwiki.company.com)- No trailing slash
- Must be the root URL (not a specific space)
- Username:
opencrowd-sync(or your admin user) - Password: The password for that user
- Click Save
Step 3: Test the connection¶
- On the connector card, click Health Check
- You should see a green "Connected" status
- If it fails, check:
- Is the URL accessible from the OpenCrowd server?
- Are the credentials correct?
- Does the user have admin rights?
Step 4: Import users and groups¶
- Click Sync on the connector card (or use the dropdown → Import Users)
- OpenCrowd will pull all xWiki users and groups into the Access Matrix
- Check the Identity page to see imported users
What syncs from xWiki¶
| Data | Direction | Notes |
|---|---|---|
| Users | xWiki → OpenCrowd | Username, email, first/last name |
| Groups | xWiki → OpenCrowd | Group name, membership |
| Space permissions | xWiki → OpenCrowd | View/edit/admin per space |
| User creation | OpenCrowd → xWiki | When approving access requests |
| Group membership | OpenCrowd → xWiki | When assigning profiles/roles |
xWiki API endpoints used¶
GET /rest/wikis/xwiki/spaces # List spaces
GET /rest/wikis/xwiki/classes/XWiki.XWikiUsers # List users
GET /rest/wikis/xwiki/classes/XWiki.XWikiGroups # List groups
PUT /rest/wikis/xwiki/spaces/XWiki/pages/{user} # Create user
POST /rest/wikis/xwiki/spaces/XWiki/pages/{group} # Add to group
GET /rest/wikis/xwiki/spaces/{space}/pages/WebPreferences # Read permissions
Connecting OpenProject¶
Step 1: Get an API key¶
OpenProject uses API tokens for authentication.
- Log into OpenProject as admin
- Go to My Account (top-right avatar) → Access Tokens
- Click Generate → API Token
- Copy the token (you won't see it again)
Alternatively, use username + password (basic auth) if API tokens are not available on your version.
Step 2: Add the connector in OpenCrowd¶
- Go to Applications → Add Connector
- Fill in:
- Name: e.g. "Company OpenProject"
- Type: OpenProject
- Base URL: Your OpenProject URL (e.g.
https://openproject.company.com) - Username:
apikey(literal string when using API token) - Password: Paste the API token
- Click Save
Step 3: Test and sync¶
- Click Health Check — should show "Connected"
- Click Sync to import users, groups, and project memberships
What syncs from OpenProject¶
| Data | Direction | Notes |
|---|---|---|
| Users | OP → OpenCrowd | Login, email, name, admin status |
| Groups | OP → OpenCrowd | Group name, members |
| Projects | OP → OpenCrowd | Project names as resources in Access Matrix |
| Memberships | OP → OpenCrowd | Who has what role in which project |
| Roles | OP → OpenCrowd | Reader, Member, Project Admin, etc. |
| User creation | OpenCrowd → OP | When approving access requests |
OpenProject API endpoints used¶
GET /api/v3/users # List users
GET /api/v3/groups # List groups
GET /api/v3/projects # List projects
GET /api/v3/memberships # List project memberships
GET /api/v3/roles # List available roles
POST /api/v3/users # Create user
POST /api/v3/memberships # Add user to project
Connecting Nextcloud¶
Step 1: Create an app password (recommended)¶
- Log into Nextcloud as admin
- Go to Settings → Personal → Security
- Under "App passwords," create one named
opencrowd - Copy the generated password
Step 2: Add the connector in OpenCrowd¶
- Go to Applications → Add Connector
- Fill in:
- Name: e.g. "Company Nextcloud"
- Type: Nextcloud
- Base URL: Your Nextcloud URL (e.g.
https://nextcloud.company.com) - Username: Your admin username
- Password: The app password from Step 1
- Click Save
Step 3: Test and sync¶
- Click Health Check — should show "Connected"
- Click Sync to import users and groups
What syncs from Nextcloud¶
| Data | Direction | Notes |
|---|---|---|
| Users | NC → OpenCrowd | Username, email, display name, quota |
| Groups | NC → OpenCrowd | Group name, members |
| User creation | OpenCrowd → NC | When approving access requests |
| Group assignment | OpenCrowd → NC | When assigning profiles |
Nextcloud API endpoints used¶
GET /ocs/v1.php/cloud/users # List users
GET /ocs/v1.php/cloud/users/{uid} # Get user details
GET /ocs/v1.php/cloud/groups # List groups
GET /ocs/v1.php/cloud/groups/{gid} # Get group members
POST /ocs/v1.php/cloud/users # Create user
POST /ocs/v1.php/cloud/users/{uid}/groups # Add to group
After Connecting¶
Once all connectors are set up:
- Access Matrix — Shows all permissions across all apps in one table
- Identity — Shows all users with their connected accounts
- Groups — Shows all groups from all sources
- Dashboard — Shows governance score, risk alerts, and connector health
Auto-Sync¶
OpenCrowd automatically syncs every 30 minutes. You can: - Force sync: Click "Sync" on any connector card - Full resync: Dropdown → "Resync All" (re-imports everything) - Import only users/groups: Dropdown → specific import option
Troubleshooting¶
| Problem | Solution |
|---|---|
| "Connection refused" | Check URL is accessible from OpenCrowd server (firewall, DNS) |
| "401 Unauthorized" | Wrong username/password. Check credentials. |
| "403 Forbidden" | User doesn't have admin rights on the target app |
| "SSL certificate error" | Target app uses self-signed cert. Add it to Docker's trust store or use http:// for testing |
| Users not appearing | Click "Sync" manually. Check connector shows "Connected" status |
| Permissions not syncing | Permissions sync requires a full sync. Click "Resync All" |
Security Notes¶
- Connector credentials are stored encrypted in the OpenCrowd database
- Use dedicated service accounts (not personal admin accounts)
- Use API tokens over passwords where available
- Rotate credentials periodically
- For production: use HTTPS for all connector URLs
Network Requirements¶
OpenCrowd needs to reach the target applications over HTTP/HTTPS:
OpenCrowd Server → xWiki (port 80/443)
OpenCrowd Server → OpenProject (port 80/443)
OpenCrowd Server → Nextcloud (port 80/443)
If OpenCrowd and the apps are on the same network (Docker, VPN, internal), use internal hostnames. If separate, ensure firewall rules allow outbound traffic from OpenCrowd.