Federation Affiliation
En resumen
Federation Affiliation manages the formal legal relationship between clubs and their parent federation, and between national federations and the continental and world bodies above them (CEP and FIPJP). It covers AffiliationApplication workflows with auto Club creation, annual renewal, member-count-based affiliation fee calculation, document management, status lifecycle (active, suspended, withdrawn) with strict transition enforcement, and persisted snapshot member-count reporting upward to FIPJP and CEP.
Cómo funciona
Affiliation is the legal layer that sits above club membership and licensing — a club must be affiliated with the federation to issue licenses, and a federation must be affiliated with FIPJP/CEP to participate in international competition. The AffiliationApplication model drives the workflow through draft → submitted → under_review → approved/rejected, with parent-org validation that ensures the applicant attaches to the correct OrgNode in the tenant's hierarchy. When a club application is approved, the system auto-creates the Club entity and links it to the parent OrgNode; document uploads (statutes, insurance proof, board composition, etc.) are required as part of the application package and stored alongside the affiliation record.
Annual affiliation renewal runs as a federation-driven cycle, typically tied to the same season as licensing. The affiliation fee is calculated based on member count using the federation's configured pricing model (flat, per-member, or tiered) — most federations bill clubs once a year using a snapshot of active members at a configured cut-off date. Status management uses dedicated suspend, reinstate, and terminate endpoints that enforce valid status transitions (returning HTTP 409 on invalid transitions) and write structured audit log entries for every change, so suspended clubs cannot issue licenses or enter competitions until reinstated.
Member-count reporting flows upward through the OrgNode tree. The MemberCountReport model aggregates active members and licensed members at club, district, and federation levels; persisted snapshots are generated on a configurable cadence and exposed for FIPJP and CEP annual reporting. This gives FIPJP a consistent dataset for global statistics without ad-hoc data pulls, and gives national federations the documentation they need for grant applications and government reporting. The combination of affiliation status, document management, and member-count reporting forms the formal compliance backbone that all higher-level operations (competitions, transfers, ITC) rely on.
Capacidades clave
- Club-to-federation and federation-to-FIPJP/CEP affiliation lifecycle
- AffiliationApplication workflow with parent-org validation and auto Club creation on approval
- Annual renewal with member-count-based affiliation fee calculation
- Document management for statutes, insurance proof, and board composition
- Suspend / reinstate / terminate endpoints with strict status-transition enforcement
- MemberCountReport with aggregation at club, district, and federation levels
- Persisted snapshots for FIPJP and CEP annual reporting
En la práctica
A newly formed Norwegian club submits an affiliation application to NPF, attaching statutes, board composition, and proof of liability insurance. The federation officer reviews the documentation, verifies the parent OrgNode (NPF national level — Norway is flat with no district layer), and approves. The system auto-creates the Club entity, links it to NPF, and starts the affiliation status as active.
A year later, the renewal cycle calculates the new affiliation fee based on the snapshot member count of 38 active members. The fee is invoiced via Stripe; on payment, status remains active. When NPF runs its annual snapshot for FIPJP reporting, the new club's 38 members and 0 licensed members (Norway has no license system for recreational competitions) are rolled into the federation-level MemberCountReport that ships to FIPJP.
Funcionalidades de este subsistema
7| ID | Status | Funcionalidades |
|---|---|---|
| F03.04.01 | Entregado | Club affiliation to regional/national federation — PL-F0304a ✅ PL-F0304a |
| F03.04.02 | Entregado | Annual affiliation renewal — PL-F0304a ✅ PL-F0304a |
| F03.04.03 | Entregado | Affiliation fee calculation (based on member count) — PL-F0304a ✅ PL-F0304a |
| F03.04.04 | Entregado | Affiliation document management (statutes, insurance proof, etc.) — PL-F0304a ✅ PL-F0304a |
| F03.04.05 | Entregado | New federation/club application process — AffiliationApplication model with full workflow (draft → submitted → under_review → approved/rejected). Club applications auto-create Club entity on approval. CRUD + status filtering, parent org validation, audit trail. — PL-F0304b ✅ PL-F0304b |
| F03.04.06 | Entregado | Affiliation status (active, suspended, withdrawn) — Enhanced suspend/reinstate/terminate endpoints with 409 conflict codes, structured audit logging. Proper status transition enforcement. — PL-F0304b ✅ PL-F0304b |
| F03.04.07 | Entregado | Federation member count reporting (upward to parent) — MemberCountReport model with club/district/federation-level aggregation. Counts active members and licensed members. Persisted snapshots for FIPJP/CEP annual reporting. — PL-F0304b ✅ PL-F0304b |