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

From version 2.1
edited by Admin User
on 2026/09/02 09:30
Change comment: Created by office importer.
To 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].

Summary

Details

Page properties
Content
... ... @@ -1,230 +1,0 @@
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.