Last modified by Admin User on 2026/09/02 09:31

From version 1.1
edited by Admin User
on 2026/09/02 09:30
Change comment: Changed document syntax from [XWiki 2.1] to [xwiki/2.1].
To version 6.1
edited by Admin User
on 2026/09/02 09:30
Change comment: There is no comment for this version

Summary

Details

Page properties
Title
... ... @@ -1,0 +1,1 @@
1 +Contents
Content
... ... @@ -1,0 +1,230 @@
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.
fulfillment-group-bulk-licenses_a6f51be53df57a8d.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.admin
Size
... ... @@ -1,0 +1,1 @@
1 +86.7 KB
Content
fulfillment-group-bulk-licenses_ba0c4d5b8a553f45.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.admin
Size
... ... @@ -1,0 +1,1 @@
1 +104.8 KB
Content
fulfillment-group-bulk-licenses_d2aa6c02ee324f44.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.admin
Size
... ... @@ -1,0 +1,1 @@
1 +20.1 KB
Content
fulfillment-group-bulk-licenses_fe51b9919ebd7117.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.admin
Size
... ... @@ -1,0 +1,1 @@
1 +66.3 KB
Content