Skip to content

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_connectors role

Connecting xWiki

It's best practice to create a dedicated user for OpenCrowd rather than using your personal admin account.

  1. Log into your xWiki instance as admin
  2. Go to AdministrationUsersCreate User
  3. Username: opencrowd-sync
  4. Give it Admin rights (needed to read/write users, groups, and page permissions)

Step 2: Add the connector in OpenCrowd

  1. In OpenCrowd, go to Applications (left sidebar)
  2. Click Add Connector (or the + button)
  3. Fill in:
  4. Name: e.g. "Company xWiki"
  5. Type: xWiki
  6. Base URL: Your xWiki URL (e.g. https://xwiki.company.com)
    • No trailing slash
    • Must be the root URL (not a specific space)
  7. Username: opencrowd-sync (or your admin user)
  8. Password: The password for that user
  9. Click Save

Step 3: Test the connection

  1. On the connector card, click Health Check
  2. You should see a green "Connected" status
  3. If it fails, check:
  4. Is the URL accessible from the OpenCrowd server?
  5. Are the credentials correct?
  6. Does the user have admin rights?

Step 4: Import users and groups

  1. Click Sync on the connector card (or use the dropdown → Import Users)
  2. OpenCrowd will pull all xWiki users and groups into the Access Matrix
  3. 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.

  1. Log into OpenProject as admin
  2. Go to My Account (top-right avatar) → Access Tokens
  3. Click Generate → API Token
  4. 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

  1. Go to ApplicationsAdd Connector
  2. Fill in:
  3. Name: e.g. "Company OpenProject"
  4. Type: OpenProject
  5. Base URL: Your OpenProject URL (e.g. https://openproject.company.com)
  6. Username: apikey (literal string when using API token)
  7. Password: Paste the API token
  8. Click Save

Step 3: Test and sync

  1. Click Health Check — should show "Connected"
  2. 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

  1. Log into Nextcloud as admin
  2. Go to SettingsPersonalSecurity
  3. Under "App passwords," create one named opencrowd
  4. Copy the generated password

Step 2: Add the connector in OpenCrowd

  1. Go to ApplicationsAdd Connector
  2. Fill in:
  3. Name: e.g. "Company Nextcloud"
  4. Type: Nextcloud
  5. Base URL: Your Nextcloud URL (e.g. https://nextcloud.company.com)
  6. Username: Your admin username
  7. Password: The app password from Step 1
  8. Click Save

Step 3: Test and sync

  1. Click Health Check — should show "Connected"
  2. 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:

  1. Access Matrix — Shows all permissions across all apps in one table
  2. Identity — Shows all users with their connected accounts
  3. Groups — Shows all groups from all sources
  4. 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.