Fanafdelingen - Member Management & Synchronization Guide

Overview

Fanafdelingen is a member management platform that automatically synchronizes member data between two systems:

  • ForeningLet (Fanafdelingen) - Your primary membership database and management system
  • Brøndby Support (MentoClub) - Your payment and subscription platform

The platform runs automatic hourly synchronizations and provides an admin interface to monitor, filter, and manage members across both systems.


Table of Contents

  1. Understanding Membership Types
  2. How Synchronization Works
  3. Admin Panel Overview
  4. Managing ForeningLet Members
  5. Managing Brøndby Support Members
  6. Common Scenarios & Solutions
  7. Filters & Tabs Explained
  8. Bulk Actions
  9. Sync Logs & Monitoring
  10. Troubleshooting

Understanding Membership Types

Regular Members (Almindelig)

  • Members who pay their membership fee through ForeningLet
  • Payment status tracked via account balance (saldo) in ForeningLet
  • Marked with genuine_member = true in the system
  • Displayed with a green badge as "Almindelig"

Combi Members (Kombi)

  • Members who have an active subscription through Brøndby Support
  • Payment status tracked via Brøndby Support's payment system
  • Marked with genuine_member = false in the system
  • May also have a ForeningLet account (linked automatically)
  • Displayed with an orange badge as "Kombi"
  • Their membership type in Brøndby Support contains "Kombi"

How Member Types Are Determined

When a member subscribes through Brøndby Support with a "Kombi" membership: 1. The system automatically searches for an existing ForeningLet account using their email address 2. If found: The two accounts are linked together, and the ForeningLet account is marked as combi 3. If not found: A new ForeningLet account is created and marked as combi 4. The member is now managed as a combi member with payment handled by Brøndby Support


How Synchronization Works

Automatic Hourly Sync

The platform runs a full synchronization every hour in this sequence:

1. Activities Sync (First)

  • Fetches all activities from ForeningLet
  • Updates activity names and details
  • Creates new activities if they don't exist locally

2. ForeningLet Members Sync (Second)

  • Fetches all members from ForeningLet API
  • Processes in batches of 500 members for performance
  • Creates new member records if they don't exist
  • Updates existing member records with latest data
  • Restores soft-deleted members if they reappear
  • Syncs member-activity relationships
  • Removes members that no longer exist in ForeningLet (soft delete)

3. Brøndby Support Members Sync (Third - After ForeningLet completes)

  • Fetches all members from MentoClub API
  • Processes in batches
  • Creates new Brøndby Support member records
  • Updates existing records with payment status
  • Calculates payment status based on:
  • Next payment date (next_capture)
  • Number of unpaid transactions
  • Payment interval (monthly/yearly)
  • Links combi members to ForeningLet accounts
  • Removes members that no longer exist (soft delete)

4. Automatic Member Linking (Hourly)

  • Runs after synchronization completes
  • Attempts to link unconnected combi members by matching email addresses
  • Only links members with paid Brøndby Support subscriptions

Payment Status Calculation

For Brøndby Support members, payment status is calculated as:

  • Paid - Next payment is in the future (0 or more days away)
  • Overdue - Next payment is past due but within 90 days
  • Terminated - Next payment is more than 90 days overdue
  • Unknown - No payment group information available
  • Null - No status information

The calculation accounts for: - Unpaid transactions (subtracts months/years from next payment date) - Payment interval (yearly vs monthly subscriptions)

Manual Sync

Admins can trigger manual synchronization:

For ForeningLet: 1. Go to Fanafdelingen → Medlemmer 2. Click "Sync from ForeningLet" button in the top right 3. A notification confirms the sync has started 4. Refresh the page after a few moments to see updated data

For Brøndby Support: 1. Go to Brøndby Support → Medlemmer 2. Click "Sync from Brøndby Support" button in the top right 3. A notification confirms the sync has started 4. Refresh the page after a few moments to see updated data


Admin Panel Overview

The admin panel is organized into several navigation groups:

Fanafdelingen Group

  • Medlemmer - View and manage ForeningLet members
  • Aktiviteter - View club activities and their members

Brøndby Support Group

  • Medlemmer - View and manage Brøndby Support members (combi members only)

Mentoclub Group

  • Mentoclub Combinations - Analysis view of membership combinations

Other

  • Sync Logs - View synchronization history and errors
  • Users - Manage admin users

Managing ForeningLet Members

Access: Fanafdelingen → Medlemmer

Available Tabs

1. Alle (All)

Shows all ForeningLet members regardless of type or status.

2. Unpaid

Shows members with a positive saldo (balance owed). - These members have outstanding payments in ForeningLet - Only relevant for regular members (not combi) - Badge shows total count of unpaid members

3. Combi

Shows all combi members (genuine_member = false). - Payment handled by Brøndby Support - Should have a link to Brøndby Support account

4. Regular

Shows all regular members (genuine_member = true). - Payment handled directly in ForeningLet - Payment status based on saldo

5. Combi uden BS (Combi without Brøndby Support)

Shows combi members who are NOT linked to a Brøndby Support account. - This is a problem state - combi members should always have a BS link - How to fix: - Check if the member exists in Brøndby Support with a different email - Wait for the hourly linking job to match by email - Investigate why the link failed

6. Duplikerede emails (Duplicate Emails)

Shows members who share the same email address with other members. - This indicates data quality issues - Multiple people using the same email, or - The same person registered multiple times - How to fix: - Review each duplicate manually - Update email addresses to be unique - Consider merging duplicate member records

7. Deleted

Shows soft-deleted members (members removed from ForeningLet). - These are kept for 30 days before permanent deletion - Can be restored if they reappear in ForeningLet

Table Filters

Payment Filter: - All Memberships - No filter applied - Paid Memberships - Members with saldo ≤ 0 (no debt) - Unpaid Memberships - Members with saldo > 0 (owed money)

Combi uden BS forbindelse: - Shows only combi members without Brøndby Support connection - Useful for identifying linking problems

Available Actions

For Individual Members:

  1. Edit - View member details (read-only, data comes from ForeningLet)
  2. ForeningLet - Opens the member's profile in ForeningLet (new tab)
  3. Use this to edit member data in the source system
  4. Restore - Restore a soft-deleted member

Bulk Actions:

  1. Force Delete - Permanently delete selected members
  2. Restore - Restore selected soft-deleted members
  3. Opsig medlemskab i FA - Cancel membership in ForeningLet for selected members
  4. Konvertér til kombimedlemmer - Convert selected members to combi members

Member Detail View

When viewing/editing a member, you'll see:

Main Information: - Member ID, number, and code - Name (first and last) - Email, phone, mobile - Birthday and gender - Address details

Payment Information: - Enrollment date - Resignation date (if applicable) - Saldo (account balance in DKK) - Payment deadline - Delivery method - PBS agreement number

System Information: - Created/updated timestamps (from ForeningLet) - Genuine member status (regular vs combi) - Newsletter subscription status - Last sync time - Deleted timestamp (if soft-deleted)

Custom Fields: - Member fields (JSON data from ForeningLet) - Consent fields (GDPR consents)

Related Data (Tabs): - Activities - Activities this member is registered for - Brøndby Support By Id - Linked Brøndby Support account (if combi) - Duplicates By Email - Other members with the same email address


Managing Brøndby Support Members

Access: Brøndby Support → Medlemmer

Note: This view only shows members with "Kombi" membership type. Other Brøndby Support members are filtered out.

Available Tabs

1. Kombimedlemmer (Combi Members - Default)

Shows all Brøndby Support members with a "Kombi" membership type. - This is the main working view - Includes all combi members regardless of payment status

2. Unfound

Shows combi members who are paid but have NO ForeningLet account linked. - Not linked by ID (no bs_member_id connection) - Not linked by email (no matching email in ForeningLet) - This is a critical issue - paid combi members should have a ForeningLet account

How to Handle: 1. Check if the email exists in ForeningLet but with different formatting 2. Use bulk action "Opret medlemskab af FA" to create ForeningLet accounts 3. Verify the member's email address is correct in Brøndby Support 4. Contact the member to confirm their details

3. Unconnected

Shows combi members who are paid, have a matching email in ForeningLet, but are not yet linked by ID. - Not linked by ID (no bs_member_id) - BUT email exists in ForeningLet - The hourly linking job should connect these automatically

How to Handle: 1. Wait for the next hourly sync/linking job 2. Use bulk action "Opret forbindelse til FA" to manually link them 3. If this list grows, check the sync logs for errors

4. Unpaid (Expired Combi Members)

Shows combi members who are unpaid but still have a ForeningLet link. - Payment status is Overdue or Terminated - Still have bs_member_id connection - May need membership cancellation or payment follow-up

How to Handle: 1. Contact members for payment 2. If terminated, consider canceling their FA membership 3. Monitor for members transitioning from overdue to terminated

5. Double payment (Combi with Paid Membership)

Shows combi members who have BOTH: - A paid Brøndby Support subscription AND - A genuine ForeningLet membership (genuine_member = true)

This means they're paying twice!

How to Handle: 1. Verify if this is intentional (some members may want both) 2. If unintentional, use bulk action "Konvertér til kombimedlemmer" 3. This marks their ForeningLet membership as combi (genuine_member = false) 4. They'll only pay through Brøndby Support

6. Downgraded

Shows members who: - Are NO LONGER combi members in Brøndby Support (membership type changed) - BUT still have a ForeningLet account linked

How to Handle: 1. Verify the member's current status in Brøndby Support 2. If they downgraded intentionally, their FA membership should be converted to regular 3. Update their membership type accordingly

7. Deleted

Shows soft-deleted combi members from Brøndby Support. - Members who were removed from Brøndby Support - Kept for 30 days before permanent deletion - Can be restored if they reappear

Table Filters

Betaling (Payment) Filter: Dropdown to filter by payment status: - Paid - Active paid subscriptions - Overdue - Payment failed, within 90 days - Terminated - More than 90 days overdue - Unknown - No payment group data - Null - No status information

Har medlemskab af Fanafdelingen: Checkbox filter showing only members with a linked ForeningLet account.

Available Actions

For Individual Members:

  1. Activities - View timeline of changes to this member
  2. Edit - View member details (read-only)
  3. Restore - Restore soft-deleted member
  4. Cancel FA Membership - Cancel their ForeningLet membership
  5. Only visible if status is "Terminated"
  6. Requires confirmation

Bulk Actions:

  1. Force Delete - Permanently delete selected members
  2. Restore - Restore selected soft-deleted members
  3. Opret forbindelse til FA - Create connection to ForeningLet
  4. Links to existing FA account by email
  5. Use for "Unconnected" members
  6. Opret medlemskab af FA - Create ForeningLet membership
  7. Creates new FA account for this member
  8. Use for "Unfound" members
  9. Konvertér til kombimedlemmer - Convert to combi members
  10. Marks linked FA accounts as combi (genuine_member = false)
  11. Use for "Double payment" members

Member Detail View

Basic Information: - ID and membership number - Name (first, last, full) - Email address (copyable) - Active status

Payment Information: - Unpaid transactions count - Payment status (Paid/Overdue/Terminated) - Next payment in (days) - Payment interval (yearly/monthly) - Payment groups (detailed view)

Membership Information: - Membership type (should contain "Kombi") - Created date in Brøndby Support - Combi member status (Ja/Nej)

Custom Fields: - Member fields (JSON data from MentoClub)

System Information: - Created/updated timestamps - Last sync time - Deleted timestamp (if soft-deleted)

Related Data (Tabs): - Membership By Id - Linked ForeningLet account (if connected by ID) - Membership By Email - ForeningLet accounts with matching email - Activity Log - History of changes to this member


Common Scenarios & Solutions

Scenario 1: New Combi Member Signs Up

What Happens Automatically: 1. Member signs up for combi membership in Brøndby Support 2. Next sync (within 1 hour): - Member is imported to platform - System searches for existing FA account by email 3. If FA account found: - Accounts are linked (bs_member_id set) - FA account marked as combi (genuine_member = false) 4. If FA account not found: - New FA account is created - Automatically linked - Marked as combi

Admin Action Required: - None if email matches perfectly - If member appears in Unfound tab, use bulk action to create FA membership


Scenario 2: Combi Member Payment Fails

What Happens Automatically: 1. Brøndby Support marks payment as failed 2. unpaid_transactions counter increases 3. Next sync: - Status changes to Overdue - Member appears in Unpaid tab 4. After 90 days overdue: - Status changes to Terminated

Admin Action Required: 1. Contact member for payment 2. If payment recovered: No action needed, next sync updates status 3. If terminated and no recovery: - Consider using "Cancel FA Membership" action - Member loses access to FA benefits


Scenario 3: Double Payment Detection

Identifying: - Member appears in Double payment tab - Has Brøndby Support combi subscription (paid) - Has ForeningLet membership marked as regular (genuine_member = true)

How to Fix: 1. Go to Brøndby Support → Medlemmer 2. Click Double payment tab 3. Select the affected member(s) 4. Use bulk action: Konvertér til kombimedlemmer 5. This marks their FA membership as combi 6. They'll only pay through Brøndby Support


Scenario 4: Email Mismatch Prevents Linking

Symptoms: - Combi member in Unfound tab - You know they have an FA account - Email addresses differ slightly

How to Fix: 1. Update email in Brøndby Support OR ForeningLet to match 2. Wait for next hourly linking job 3. OR use Opret forbindelse til FA bulk action 4. OR manually create link if emails cannot match


Scenario 5: Duplicate Members in ForeningLet

Identifying: - Members appear in Duplikerede emails tab - Same email address used multiple times

Investigation: 1. Click member to view details 2. Check Duplicates By Email tab 3. Compare member details (name, address, registration date)

How to Fix: 1. Determine which record is correct/primary 2. Update incorrect record's email in ForeningLet 3. Consider merging data if same person 4. If different people, ask one to use different email


Scenario 6: Member Cancels Combi Subscription

What Happens Automatically: 1. Member cancels in Brøndby Support 2. Next sync: - Member removed from Brøndby Support (soft deleted) - Appears in Deleted tab - Link to FA account is cleared

Admin Action Required: 1. Decide if FA membership should continue 2. If yes: Convert to regular membership, they pay via FA 3. If no: Cancel FA membership 4. Note: Currently downgrade handling is disabled by feature flag


Scenario 7: Combi Member Not Yet Linked

Identifying: - Member in Unconnected tab - Has matching email in ForeningLet - Not yet linked by ID

How to Fix: 1. Wait for next hourly linking job (automated) 2. OR select member(s) and use: Opret forbindelse til FA 3. Verify link created successfully


Filters & Tabs Explained

ForeningLet Members - Quick Reference

Tab Name What It Shows When to Use
Alle All members General overview, searching
Unpaid Members with balance owed Payment follow-up for regular members
Combi All combi members Overview of Brøndby Support subscribers
Regular All regular members Members paying through ForeningLet
Combi uden BS Combi without BS link Action needed - Fix broken links
Duplikerede emails Duplicate email addresses Action needed - Data quality cleanup
Deleted Soft-deleted members Review recently removed members

Brøndby Support Members - Quick Reference

Tab Name What It Shows When to Use
Kombimedlemmer All combi members Main working view
Unfound Paid, no FA account Critical - Create FA accounts
Unconnected Paid, email match, no ID link Usually auto-fixed, manual link if needed
Unpaid Overdue/terminated, still linked Payment follow-up, possible cancellation
Double payment Paying both BS and FA Fix - Convert to combi only
Downgraded No longer combi, still linked Update membership type
Deleted Removed from BS Review cancellations

Bulk Actions

ForeningLet Members

Opsig medlemskab i FA (Cancel FA Membership) - Cancels membership in ForeningLet for selected members - Requires confirmation - Use when: Members should no longer have FA access

Konvertér til kombimedlemmer (Convert to Combi) - Marks selected members as combi (genuine_member = false) - Use when: Fixing double payment situations

Force Delete - Permanently removes members from local database - Use with caution: Cannot be undone - Deleted members will return on next sync if still in ForeningLet

Restore - Restores soft-deleted members - Use when: Member should be active again

Brøndby Support Members

Opret forbindelse til FA (Create Connection to FA) - Links selected BS members to ForeningLet accounts by email - Use for: Unconnected members - Requires: Matching email address exists in ForeningLet

Opret medlemskab af FA (Create FA Membership) - Creates new ForeningLet account for selected BS members - Use for: Unfound members (no FA account exists) - Automatically links after creation

Konvertér til kombimedlemmer (Convert to Combi) - Marks linked FA accounts as combi - Use for: Double payment members - Prevents double payment

Force Delete & Restore - Same as ForeningLet members


Sync Logs & Monitoring

Access: Main Menu → Sync Logs

What Gets Logged

Every synchronization operation creates a log entry with: - Name - Operation type (e.g., "Combi Upgrade", "Sync FA", "Link Member") - Description - Details about what happened - Status - done or error - Error - Error message if sync failed - Properties - JSON data with details (member IDs, counts, etc.) - Timestamps - When the operation occurred

Common Log Entries

Successful Operations: - Sync FA - ForeningLet member sync completed - Sync BS - Brøndby Support member sync completed - Combi Upgrade - Member converted to combi - Link Member - BS member linked to FA account

Error Situations: - Sync failed: [error message] - API connection issue - Link failed: [reason] - Member linking problem - Create failed: [reason] - Account creation issue

Monitoring Best Practices

  1. Check logs daily for error status
  2. Investigate errors immediately - they indicate sync problems
  3. Look for patterns - repeated errors suggest systematic issues
  4. Review timestamps - ensure hourly sync is running

Manual Sync Verification

After triggering a manual sync: 1. Go to Sync Logs 2. Sort by Created At (newest first) 3. Look for recent entry with your sync type 4. Verify Status = done 5. Check Properties for counts (members synced, created, updated)


Troubleshooting

Sync Not Running

Symptoms: - synced_at timestamps are old - New members not appearing - Changes in source system not reflected

Check: 1. Verify cron job is running (server admin task) 2. Check Sync Logs for recent errors 3. Manually trigger sync to test 4. Review server logs for queue worker issues

Fix: - Contact server administrator - Ensure Laravel scheduler is active: php artisan schedule:work - Ensure queue workers are running: php artisan queue:work


Member Not Linking Automatically

Symptoms: - Combi member appears in Unfound or Unconnected - Email addresses match but no link

Check: 1. Verify email addresses match exactly (case-insensitive, but check spacing) 2. Check if member is actually a combi member in BS 3. Check if member has paid status in BS 4. Review Sync Logs for linking errors

Fix: 1. Wait for next hourly linking job 2. Use Opret forbindelse til FA bulk action 3. If emails don't match, update in source system 4. If still fails, check application logs


Payment Status Not Updating

Symptoms: - Member paid but still shows as Overdue/Terminated - Status in BS is correct but platform shows wrong status

Check: 1. When was last sync? (Check synced_at) 2. Check Sync Logs for recent BS sync errors 3. Verify payment group data exists in BS

Fix: 1. Trigger manual sync from BS Medlemmer page 2. Wait for next hourly sync 3. If persistent, check BS API is returning correct data


Duplicate Members Keep Appearing

Symptoms: - Same person has multiple accounts - Duplikerede emails tab keeps growing

Root Causes: - People registering multiple times - Family members sharing email - Data import issues

Fix: 1. Review each duplicate case individually 2. Update email addresses to be unique 3. Consider adding email validation at registration 4. Implement member merge functionality (future enhancement)


Member Appears in Wrong Tab

Symptoms: - Combi member in Regular tab or vice versa - Payment status seems incorrect

Check: 1. View member details, check genuine_member flag 2. Check if BS link exists (bs_member_id) 3. Verify membership type in BS contains "Kombi" 4. Check payment calculation (next_payment_in)

Fix: 1. If link is missing: Use linking bulk action 2. If genuine_member wrong: Use convert bulk action 3. If still wrong after sync: Check source data


Data Privacy & Security

Data Retention

  • Soft-deleted members are kept for 30 days
  • After 30 days, members are permanently deleted (pruned)
  • Activity logs are cleaned up after configured retention period
  • Sync logs are pruned after 30 days

Personal Data

All member data is synchronized from authoritative sources: - ForeningLet owns all FA member data - Brøndby Support owns all BS member data - Platform acts as read-only viewer with limited admin actions - Changes should be made in source systems

Audit Trail

  • All member changes are logged via Activity Log
  • Tracks: Name, email, saldo, status changes
  • Admin actions are recorded
  • Sync operations are logged

Best Practices for Admins

Daily Tasks

  1. Check Unfound tab - create FA accounts for new combi members
  2. Review Duplikerede emails - clean up data quality issues
  3. Check Sync Logs for errors
  4. Monitor Double payment tab - fix billing issues

Weekly Tasks

  1. Review Unconnected tab - verify auto-linking is working
  2. Check Unpaid tab - follow up on overdue payments
  3. Review Combi uden BS tab - fix broken links
  4. Verify sync timestamps are recent

Monthly Tasks

  1. Review deleted members
  2. Analyze membership trends
  3. Clean up duplicate emails
  4. Audit member data quality

When Making Changes

  1. Never edit data directly in the platform - data will be overwritten
  2. Always edit in source system (ForeningLet or Brøndby Support)
  3. Wait for sync or trigger manual sync to see changes
  4. Use bulk actions for administrative tasks (linking, converting)

Communication

  • Inform members of payment status changes
  • Follow up on terminated subscriptions
  • Explain combi vs regular memberships clearly
  • Provide clear payment instructions

Support & Further Help

For Technical Issues

  • Review Sync Logs for error details
  • Check member linking status
  • Verify synchronization timestamps
  • Contact your system administrator

For Member Issues

  • Verify member exists in source system (ForeningLet or BS)
  • Check email address matching
  • Review payment status in Brøndby Support
  • Update data in source system, not in platform

For Data Issues

  • Check Duplikerede emails tab
  • Review Combi uden BS tab
  • Use appropriate bulk actions
  • Wait for next sync after source data updates