high complexity high priority should have v1.1 extracted Integrations & External Systems Confidence: 100%
6
Components
0
Shared
16
User Stories
Yes
Analyzed

Description

This feature connects the app to the external membership management systems used by member organizations, specifically Cornerstone and Consio, and handles Vipps SSO member ID synchronization. It ensures that user profiles, membership status, and organizational affiliations in the app stay consistent with the authoritative records held in each organization's member registry. The Vipps SSO integration additionally enables automatic population of national identity numbers (personnummer) that are currently missing from many member records.

Analysis

Business Value

Member organizations invest heavily in maintaining accurate membership databases, and any divergence between those systems and the app creates administrative burden, incorrect access control decisions, and reporting inaccuracies. Automated synchronization ensures that when a membership lapses or a role changes in the source system, that change is reflected promptly in the app without manual intervention. The Vipps SSO member ID sync addresses a specific data quality gap identified across organizations: many member records lack personnummer, which is required for certain reporting and honorarium processes. Closing this gap through the authentication flow provides ongoing data enrichment at zero marginal cost, significantly improving downstream reporting quality.

Implementation Notes

Cornerstone and Consio both provide REST APIs with API key authentication; sync logic should run as scheduled Supabase Edge Functions (e.g., nightly full sync plus event-driven delta sync via webhooks where supported). The member sync repository stores last-sync timestamps and conflict resolution rules. Vipps SSO member ID sync is a byproduct of the BankID/Vipps authentication flow: upon successful Vipps login, the returned personnummer is written back to the member record in the source system via the Member System API Gateway. A member sync status widget in the admin UI shows sync health, last run time, and error counts per organization. Conflict resolution defaults to the external system as source of truth for membership status, with the app as source of truth for activity data.

Dependencies

bankid-vipps-authenticationrole-based-access-controlmulti-org-membership-handling

Definition of Done

Cornerstone sync correctly reflects membership status changes within 24 hours
Consio sync correctly reflects membership status changes within 24 hours
Vipps SSO flow writes personnummer back to member record on first successful login
Member sync status widget shows per-org sync health in admin dashboard
Sync errors logged to sync_logs and surfaced as admin alerts
No personally identifiable data cached beyond session scope in client storage

User Stories (16)

Trigger On-Demand Member Data Synchronization
medium 2 pts

As a As an administrator

I want I want to manually trigger an immediate full or delta sync for a specific member system integration outside of the scheduled sync window

So that So that I can force an update after known bulk changes in the external system (e.g., after a membership renewal campaign or organizational restructuring) without waiting for the nightly scheduled run

Acceptance Criteria
  • Given a configured integration, when I click 'Sync Now', then a sync job is queued immediately and the widget shows a loading/progress state
  • Given a sync is in progress, when I view the widget, then I see a spinner with the number of records processed so far and an estimated completion indicator
  • Given the sync completes successfully, when the job finishes, then the widget refreshes to show the updated last-sync timestamp and total records synced
  • +2 more
View Full Story →
Review Member Sync Audit History
medium 2 pts

As a As an administrator

I want I want to view a detailed audit log of all member synchronization events, including successful syncs, errors, conflict resolutions, and manual overrides

So that So that I have a reliable audit trail for compliance purposes and can diagnose recurring sync issues or patterns of data divergence

Acceptance Criteria
  • Given sync events have occurred, when I navigate to the sync audit history, then I see a paginated list of events in reverse chronological order with key metrics per event
  • Given I apply a date range filter, when I submit the filter, then only events within the selected range are displayed and the filter state persists while I review entries
  • Given I select a specific sync event, when I expand the detail view, then I see the full breakdown including which records changed, what the changes were, and any error messages
  • +2 more
View Full Story →
Monitor Vipps SSO Personnummer Enrichment
medium 3 pts

As a As an administrator

I want I want to see how many member records have been enriched with personnummer via the Vipps SSO authentication flow, and track the ongoing enrichment rate over time

So that So that I can assess progress toward closing the personnummer data quality gap in member records, which is required for Bufdir reporting and honorarium processing

Acceptance Criteria
  • Given a member successfully authenticates via Vipps SSO, when the authentication flow completes, then the Vipps Member ID Sync Service writes the returned personnummer to the member's source system record within 30 seconds
  • Given personnummer enrichment has occurred, when I view the enrichment statistics panel, then I see total members enriched, percentage of previously missing personnummer now filled, and the date of the most recent enrichment
  • Given I view the enrichment timeline chart, when I look at the weekly breakdown, then I see the number of new enrichments per week since the feature was activated
  • +2 more
View Full Story →
Configure Organization-Specific Conflict Resolution Rules
medium 3 pts

As a As a Organization Administrator

I want I want to configure which system takes precedence as the source of truth for each category of member data (membership status, role assignments, contact details) when conflicts arise during sync

So that So that the app's conflict resolution behavior aligns with my organization's data governance policy, rather than applying a one-size-fits-all default that may not suit our specific workflow

Acceptance Criteria
  • Given I navigate to the integration conflict resolution settings, when the page loads, then I see the current rule for each data category (membership status, role, contact details, affiliation) with the current setting highlighted
  • Given I change a rule from 'external system wins' to 'flag for manual review' for role assignments, when I save, then the new rule is stored and a confirmation message shows the effective date
  • Given the updated rule is active and a conflict occurs, when the next sync runs, then role assignment conflicts are added to the manual review queue instead of being automatically resolved
  • +2 more
View Full Story →
Trigger On-Demand Member Data Synchronization
medium 2 pts

As a As an administrator

I want I want to manually trigger an immediate full or delta sync for a specific member system integration outside of the scheduled sync window

So that So that I can force an update after known bulk changes in the external system (e.g., after a membership renewal campaign or organizational restructuring) without waiting for the nightly scheduled run

Acceptance Criteria
  • Given a configured integration, when I click 'Sync Now', then a sync job is queued immediately and the widget shows a loading/progress state
  • Given a sync is in progress, when I view the widget, then I see a spinner with the number of records processed so far and an estimated completion indicator
  • Given the sync completes successfully, when the job finishes, then the widget refreshes to show the updated last-sync timestamp and total records synced
  • +2 more
View Full Story →
Review Member Sync Audit History
medium 2 pts

As a As an administrator

I want I want to view a detailed audit log of all member synchronization events, including successful syncs, errors, conflict resolutions, and manual overrides

So that So that I have a reliable audit trail for compliance purposes and can diagnose recurring sync issues or patterns of data divergence

Acceptance Criteria
  • Given sync events have occurred, when I navigate to the sync audit history, then I see a paginated list of events in reverse chronological order with key metrics per event
  • Given I apply a date range filter, when I submit the filter, then only events within the selected range are displayed and the filter state persists while I review entries
  • Given I select a specific sync event, when I expand the detail view, then I see the full breakdown including which records changed, what the changes were, and any error messages
  • +2 more
View Full Story →
Monitor Vipps SSO Personnummer Enrichment
medium 3 pts

As a As an administrator

I want I want to see how many member records have been enriched with personnummer via the Vipps SSO authentication flow, and track the ongoing enrichment rate over time

So that So that I can assess progress toward closing the personnummer data quality gap in member records, which is required for Bufdir reporting and honorarium processing

Acceptance Criteria
  • Given a member successfully authenticates via Vipps SSO, when the authentication flow completes, then the Vipps Member ID Sync Service writes the returned personnummer to the member's source system record within 30 seconds
  • Given personnummer enrichment has occurred, when I view the enrichment statistics panel, then I see total members enriched, percentage of previously missing personnummer now filled, and the date of the most recent enrichment
  • Given I view the enrichment timeline chart, when I look at the weekly breakdown, then I see the number of new enrichments per week since the feature was activated
  • +2 more
View Full Story →
View Member Sync Health Dashboard
high 3 pts

As a As an administrator

I want I want to view the current synchronization health, last sync timestamp, error counts, and sync progress for each connected member system (Cornerstone and Consio) for my organization(s)

So that So that I can quickly identify whether member data is up to date and take action when sync issues arise before they affect access control or reporting accuracy

Acceptance Criteria
  • Given I am an Organization Administrator, when I navigate to the integration status section, then I see the sync health widget showing Cornerstone and Consio sync status for my organization only
  • Given I am a Global Administrator, when I navigate to the integration status section, then I see sync health for all onboarded organizations with per-organization breakdown
  • Given a sync completed successfully, when I view the widget, then I see a green status indicator, the last sync timestamp, and the record count synced
  • +2 more
View Full Story →
Review and Resolve Member Data Sync Conflicts
high 3 pts

As a As an administrator

I want I want to review records where the external member system and the app hold conflicting data, and confirm or override the conflict resolution outcome

So that So that membership status and role assignments are always based on the authoritative source, and edge cases where the automatic conflict rule is inappropriate can be corrected manually

Acceptance Criteria
  • Given a sync identifies a conflicting record, when the sync completes, then the conflict is added to the pending conflicts queue visible in the admin UI
  • Given I open a conflict record, when I review it, then I see the current app value, the external system value, the timestamp of each change, and the proposed automatic resolution
  • Given I accept the default resolution, when I click 'Apply', then the app record is updated to match the external system value and the conflict is marked as resolved
  • +2 more
View Full Story →
Configure Cornerstone Member System Integration
high 5 pts

As a As an administrator

I want I want to configure the API credentials, sync schedule, and delta sync webhook settings for the Cornerstone member management system integration

So that So that the app can automatically pull membership status, role changes, and affiliation updates from Cornerstone and keep member records current without manual intervention

Acceptance Criteria
  • Given I have valid Cornerstone API credentials, when I enter them and click 'Test Connection', then the system returns a success response within 10 seconds
  • Given the test connection passes, when I save the configuration, then the Cornerstone sync service activates and the first full sync is scheduled
  • Given I configure a webhook URL for delta sync, when Cornerstone fires a membership change event, then the sync service processes the event and updates the member record within 5 minutes
  • +2 more
View Full Story →
Configure Consio Member System Integration
high 5 pts

As a As an administrator

I want I want to configure the API credentials, sync schedule, and available webhook settings for the Consio member management system integration

So that So that member records, organizational affiliations, and membership status are kept synchronized between Consio and the app automatically

Acceptance Criteria
  • Given I have valid Consio API credentials, when I enter them and click 'Test Connection', then the system validates the connection and displays the organization name returned by the Consio API
  • Given successful credential validation, when I save the configuration and enable nightly sync, then a Supabase Edge Function is scheduled for the configured time window
  • Given Consio does not support webhooks for this organization, when I view the configuration screen, then the delta sync section is clearly marked as unavailable and only nightly full sync is offered
  • +2 more
View Full Story →
View Member Sync Health Dashboard
high 3 pts

As a As an administrator

I want I want to view the current synchronization health, last sync timestamp, error counts, and sync progress for each connected member system (Cornerstone and Consio) for my organization(s)

So that So that I can quickly identify whether member data is up to date and take action when sync issues arise before they affect access control or reporting accuracy

Acceptance Criteria
  • Given I am an Organization Administrator, when I navigate to the integration status section, then I see the sync health widget showing Cornerstone and Consio sync status for my organization only
  • Given I am a Global Administrator, when I navigate to the integration status section, then I see sync health for all onboarded organizations with per-organization breakdown
  • Given a sync completed successfully, when I view the widget, then I see a green status indicator, the last sync timestamp, and the record count synced
  • +2 more
View Full Story →
Review and Resolve Member Data Sync Conflicts
high 3 pts

As a As an administrator

I want I want to review records where the external member system and the app hold conflicting data, and confirm or override the conflict resolution outcome

So that So that membership status and role assignments are always based on the authoritative source, and edge cases where the automatic conflict rule is inappropriate can be corrected manually

Acceptance Criteria
  • Given a sync identifies a conflicting record, when the sync completes, then the conflict is added to the pending conflicts queue visible in the admin UI
  • Given I open a conflict record, when I review it, then I see the current app value, the external system value, the timestamp of each change, and the proposed automatic resolution
  • Given I accept the default resolution, when I click 'Apply', then the app record is updated to match the external system value and the conflict is marked as resolved
  • +2 more
View Full Story →
Configure Cornerstone Member System Integration
high 5 pts

As a As an administrator

I want I want to configure the API credentials, sync schedule, and delta sync webhook settings for the Cornerstone member management system integration

So that So that the app can automatically pull membership status, role changes, and affiliation updates from Cornerstone and keep member records current without manual intervention

Acceptance Criteria
  • Given I have valid Cornerstone API credentials, when I enter them and click 'Test Connection', then the system returns a success response within 10 seconds
  • Given the test connection passes, when I save the configuration, then the Cornerstone sync service activates and the first full sync is scheduled
  • Given I configure a webhook URL for delta sync, when Cornerstone fires a membership change event, then the sync service processes the event and updates the member record within 5 minutes
  • +2 more
View Full Story →
Configure Consio Member System Integration
high 5 pts

As a As an administrator

I want I want to configure the API credentials, sync schedule, and available webhook settings for the Consio member management system integration

So that So that member records, organizational affiliations, and membership status are kept synchronized between Consio and the app automatically

Acceptance Criteria
  • Given I have valid Consio API credentials, when I enter them and click 'Test Connection', then the system validates the connection and displays the organization name returned by the Consio API
  • Given successful credential validation, when I save the configuration and enable nightly sync, then a Supabase Edge Function is scheduled for the configured time window
  • Given Consio does not support webhooks for this organization, when I view the configuration screen, then the delta sync section is clearly marked as unavailable and only nightly full sync is offered
  • +2 more
View Full Story →
Onboard New Organization Member System Integration
high 8 pts

As a As a Global Administrator

I want I want to provision and configure a complete member system integration for a newly onboarded organization, including selecting the member system type (Cornerstone or Consio), entering credentials, and configuring the initial sync schedule

So that So that new organizations are fully connected to their existing membership registry from their first day on the platform, ensuring data consistency without requiring manual initial data migration

Acceptance Criteria
  • Given I start a new organization onboarding, when I reach the member system integration step, then I am presented with a dropdown to select Cornerstone, Consio, or 'No member system integration'
  • Given I select Cornerstone and enter credentials, when I test the connection successfully, then I am shown a preview of the member record count in Cornerstone before confirming the integration
  • Given I complete the integration setup, when I confirm, then an initial full sync is automatically queued and the sync status widget for this organization shows 'Initial sync in progress'
  • +2 more
View Full Story →