Wiki source code of Contents

Version 2.2 by Admin User on 2026/09/02 09:30

Hide last authors
Admin User 2.1 1
2
3
4
5
6
7
8
9
10
11
12
13 **ONEcount Fulfillment Module**
14
15 Group & Bulk Licenses — User Guide
16
17 = Contents =
18
19 ~1. Overview
20
21 2. License Types
22
23 3. Creating a Group License
24
25 4. Seat Management
26
27 5. Bulk Individual Provisioning
28
29 6. Group Admins
30
31 7. License Lifecycle
32
33 8. Reporting
34
35 9. Setup & Configuration
36
37 10. Permissions
38
39 ~11. Subscriber Self-Service (Seat Manager Portal)
40
41 = 1. Overview =
42
43 Group and bulk licenses allow an organization to purchase multiple subscriptions under a single agreement. The purchaser pays once for N seats, and those seats are distributed to individual recipients.
44
45 Two license models are supported:
46
47 * Managed seats — The organization buys N seats. A group admin assigns and unassigns members. Seats can be transferred between users. Think: corporate site license with a roster.
48 * Bulk individual — The purchaser provides a recipient list. Each recipient gets a standalone subscription. Think: a school buying 200 copies for students.
49
50 [[image:fulfillment-group-bulk-licenses_a6f51be53df57a8d.png||height="430" width="586"]]
51
52 //The Group Licenses list showing four demo licenses with seat utilization bars and status indicators.//
53
54 In this example, Skyward Aviation Academy has a managed-seat license with 4 of 10 seats assigned (green bar). Clearwater Flight School has a fully provisioned bulk license at 25/25 (red bar). AeroTech Corp is at full capacity (5/5). Sunset Wings LLC is an expired license.
55
56 = 2. License Types =
57
58 == 2.1 Managed Seats ==
59
60 When a managed-seat license is created, the system pre-creates N unassigned seat rows. A group admin can then assign each seat to a specific user (OCID). Key characteristics:
61
62 * Seats can be assigned, unassigned, and transferred
63 * The purchaser is automatically made the group admin (owner role)
64 * Additional admins can be added with “manager” role
65 * Seat counts can be increased or decreased (resize)
66 * Each assignment creates a real subscription for the assignee
67
68 == 2.2 Bulk Individual ==
69
70 Bulk individual licenses create standalone subscriptions for a list of recipients. Once provisioned, each recipient has an independent subscription. Key characteristics:
71
72 * Recipients can be provisioned via CSV upload or OCID list
73 * Each recipient gets their own gcn_transactionlog entry
74 * Subscriptions are independent — cancelling the license does not affect already-provisioned recipients
75 * The license tracks seat counts for administrative purposes
76
77 = 3. Creating a Group License =
78
79 Navigate to Fulfillment › Group Licenses. Click the red “Create License” button to open the creation modal.
80
81 [[image:fulfillment-group-bulk-licenses_ba0c4d5b8a553f45.png||height="411" width="586"]]
82
83 //The Create License modal with license type, organization name, seat count, and product-or-package selection.//
84
85 |**Field**|**Required**|**Description**
86 |**License type**|Yes|Managed seats or Bulk individual
87 |**Organization name**|No|Display name for the organization (e.g., “Skyward Aviation Academy”)
88 |**Purchaser OCID**|Yes|The OCID of the person/organization paying
89 |**Total seats**|Yes|Number of seats to create
90 |**Product or Package**|Yes|Select a product or package from the dropdown (grouped by type)
91 |**Term**|Yes|Select the term — cascades from the selected product or package
92 |**Publication**|No|The fulfillment publication
93 |**Start date**|Yes|License start date (defaults to today)
94 |**End date**|No|License end date (empty = perpetual)
95 |**Auto-renew**|No|Whether to auto-renew when the license expires
96
97 = 4. Seat Management =
98
99 Click the seat management icon (≡) on any managed-seat license row to open the seat detail page. This page shows all seats, their assignment status, and available actions.
100
101 [[image:fulfillment-group-bulk-licenses_ea2f270345ce269.png||height="430" width="586"]]
102
103 //Seat management for Skyward Aviation Academy — 4 assigned seats and 6 unassigned, with assign/unassign controls.//
104
105 == 4.1 Assigning a Seat ==
106
107 For unassigned seats, enter the recipient’s OCID and click the assign button. The system will:
108
109 * Create a subscription record for the recipient
110 * Update the seat status to “assigned”
111 * Increment the used_seats counter on the license
112 * Log an adds/removals event with reason code GROUP_SEAT_ASSIGNED
113
114 == 4.2 Unassigning a Seat ==
115
116 For assigned seats, click the unassign button. The seat returns to the available pool and the used_seats counter decrements. An adds/removals event is logged with reason code GROUP_SEAT_REMOVED.
117
118 == 4.3 Transferring a Seat ==
119
120 Enter a new OCID and click the transfer button. This atomically unassigns the old user and assigns the new one. Two adds/removals events are logged: GROUP_SEAT_TRANSFER (removal) and GROUP_SEAT_ASSIGNED (addition).
121
122 == 4.4 Resizing ==
123
124 The license can be resized (total seats increased or decreased). The system will not allow reducing below the current used_seats count. New seats are pre-created as unassigned rows for managed-seat licenses.
125
126 = 5. Bulk Individual Provisioning =
127
128 For bulk individual licenses, use the bulk seat assignment endpoint to provision recipients in batch. Two input methods are supported:
129
130 * CSV file upload — The CSV must have an “ocid” column header. Each row creates a subscription.
131 * Comma-separated OCID list — Enter OCIDs directly in the input field.
132
133 Each provisioned recipient is logged with reason code BULK_GROUP_NEW.
134
135 = 6. Group Admins =
136
137 Group admins are users authorized to manage seat assignments for a specific license. There are two roles:
138
139 |**Role**|**Description**
140 |**Owner**|Full management access. The purchaser is automatically added as owner. Cannot be removed from the admin panel.
141 |**Manager**|Can assign, unassign, and transfer seats. Can be added or removed by other admins.
142
143 Group admins are managed from the seat detail page under the “Group Admins” section.
144
145 = 7. License Lifecycle =
146
147 |**Status**|**Description**
148 |**Active**|License is in effect. Seats can be assigned/unassigned.
149 |**Expired**|License end_date has passed. A daily cron job (group_license_expiry.php) transitions active licenses to expired and unassigns all seats.
150 |**Cancelled**|Manually cancelled by an admin. All active seats are unassigned.
151 |**Suspended**|Temporarily suspended (e.g., for non-payment). Seats remain assigned but may not grant new access.
152
153 Auto-renewal: If the auto_renew flag is enabled, the expiry cron job will attempt to renew the license via Stripe using the purchaser’s stored payment method.
154
155 = 8. Reporting =
156
157 Group license recipients have real subscriptions and appear in all standard fulfillment reports. The subscription_source field distinguishes group subscriptions from individual ones:
158
159 * RPT-01 — Group recipients counted by classification. Optional source breakdown available.
160 * RPT-09 — Group-specific reason codes appear in the adds/removals report.
161 * RPT-19 — Group recipients with valid addresses appear in the mail file.
162
163 = 9. Setup & Configuration =
164
165 Navigate to Fulfillment › Setup › Group License Settings to configure:
166
167 |**Setting**|**Default**|**Description**
168 |**Enable group licenses**|Off|Master toggle for the group license feature
169 |**Maximum seats per license**|1000|Upper limit on seats per license
170 |**Default license duration (days)**|365|Default duration when end_date is not specified
171
172 = 10. Permissions =
173
174 Group license management requires the FULFILLMENT_GROUP_MANAGE permission module. Superadmin users automatically have access.
175
176 FULFILLMENT_VIEW is sufficient for read-only access to the license list. Creating, cancelling, and managing seats requires FULFILLMENT_GROUP_MANAGE.
177
178 Group admins (non-backend users) can manage seats for their own license without needing the FULFILLMENT_GROUP_MANAGE backend permission. This is controlled by the fulfillment_group_license_admin table.
179
180 = 11. Subscriber Self-Service (Seat Manager Portal) =
181
182 Group admins do not need access to the ONEcount admin panel to manage their organization’s seats. A dedicated subscriber-facing page lets them log in with their regular ONEcount credentials and manage seats directly.
183
184 == 11.1 Accessing the Seat Manager ==
185
186 The seat manager portal is located at:
187
188 //https:~/~/yoursite.onecount.net/onecount/flexreg/manage-seats.php?brand=YOURBRAND//
189
190 Group admins can be directed to this URL via email, a link on your website, or from their subscriber profile page. They must be logged in with the same ONEcount account that was designated as a group admin (owner or manager role) for the license.
191
192 == 11.2 My Group Licenses ==
193
194 After logging in, the group admin sees a list of all licenses they manage. Each license shows the organization name, license type, seat utilization, status, and date range.
195
196 [[image:fulfillment-group-bulk-licenses_d2aa6c02ee324f44.png||height="366" width="586"]]
197
198 //The subscriber-facing “My Group Licenses” view showing Skyward Aviation Academy with 4/10 seats used.//
199
200 Click “Manage Seats” to open the seat assignment page for that license.
201
202 == 11.3 Managing Seats ==
203
204 The seat detail page shows every seat in the license with its current assignment status and available actions:
205
206 [[image:fulfillment-group-bulk-licenses_fe51b9919ebd7117.png||height="366" width="586"]]
207
208 //Seat management for Skyward Aviation Academy — 4 assigned seats with Unassign/Transfer controls, 6 unassigned seats with Assign controls.//
209
210 Available actions for group admins:
211
212 |**Action**|**How**|**What Happens**
213 |**Assign**|Enter the recipient’s OCID in an empty seat row and click Assign|A subscription is created for the recipient. The seat status changes to “Assigned.”
214 |**Unassign**|Click Unassign on an occupied seat (confirmation required)|The seat returns to the available pool. The used-seats counter decrements.
215 |**Transfer**|Enter a new OCID next to an occupied seat and click Transfer|The old assignee is removed and the new assignee gets the subscription in one step.
216
217 == 11.4 What Group Admins Cannot Do ==
218
219 The subscriber self-service portal intentionally omits certain actions that are reserved for backend administrators:
220
221 * Resize the license (change total seat count)
222 * Cancel the license
223 * Add or remove group admins
224 * Change the license type, product, or dates
225
226 These operations require the FULFILLMENT_GROUP_MANAGE backend permission and are performed from the admin panel’s Group Licenses page.
227
228 == 11.5 Security ==
229
230 The seat manager uses the standard ONEcount subscriber authentication (cookie-based via ~_~_ocid). Authorization is checked on every request by verifying that the logged-in OCID appears in the fulfillment_group_license_admin table for the requested license. A subscriber who is not a designated group admin for a license cannot view or modify its seats.