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

From version 8.1
edited by Admin User
on 2026/09/02 09:31
Change comment: There is no comment for this version
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
Title
... ... @@ -1,1 +1,0 @@
1 -How-To: Bulk/Group Subscriptions
Content
... ... @@ -1,190 +1,0 @@
1 -= 1. Overview =
2 -
3 -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.
4 -
5 -Two license models are supported:
6 -
7 -* 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.
8 -* Bulk individual — The purchaser provides a recipient list. Each recipient gets a standalone subscription. Think: a school buying 200 copies for students.
9 -
10 -[[image:fulfillment-group-bulk-licenses_a6f51be53df57a8d.png||height="430" width="586"]]
11 -
12 -//The Group Licenses list showing four demo licenses with seat utilization bars and status indicators.//
13 -
14 -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.
15 -
16 -= 2. License Types =
17 -
18 -== 2.1 Managed Seats ==
19 -
20 -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:
21 -
22 -* Seats can be assigned, unassigned, and transferred
23 -* The purchaser is automatically made the group admin (owner role)
24 -* Additional admins can be added with “manager” role
25 -* Seat counts can be increased or decreased (resize)
26 -* Each assignment creates a real subscription for the assignee
27 -
28 -== 2.2 Bulk Individual ==
29 -
30 -Bulk individual licenses create standalone subscriptions for a list of recipients. Once provisioned, each recipient has an independent subscription. Key characteristics:
31 -
32 -* Recipients can be provisioned via CSV upload or OCID list
33 -* Each recipient gets their own gcn_transactionlog entry
34 -* Subscriptions are independent — cancelling the license does not affect already-provisioned recipients
35 -* The license tracks seat counts for administrative purposes
36 -
37 -= 3. Creating a Group License =
38 -
39 -Navigate to Fulfillment › Group Licenses. Click the red “Create License” button to open the creation modal.
40 -
41 -[[image:fulfillment-group-bulk-licenses_ba0c4d5b8a553f45.png||height="411" width="586"]]
42 -
43 -//The Create License modal with license type, organization name, seat count, and product-or-package selection.//
44 -
45 -|**Field**|**Required**|**Description**
46 -|**License type**|Yes|Managed seats or Bulk individual
47 -|**Organization name**|No|Display name for the organization (e.g., “Skyward Aviation Academy”)
48 -|**Purchaser OCID**|Yes|The OCID of the person/organization paying
49 -|**Total seats**|Yes|Number of seats to create
50 -|**Product or Package**|Yes|Select a product or package from the dropdown (grouped by type)
51 -|**Term**|Yes|Select the term — cascades from the selected product or package
52 -|**Publication**|No|The fulfillment publication
53 -|**Start date**|Yes|License start date (defaults to today)
54 -|**End date**|No|License end date (empty = perpetual)
55 -|**Auto-renew**|No|Whether to auto-renew when the license expires
56 -
57 -= 4. Seat Management =
58 -
59 -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.
60 -
61 -[[image:fulfillment-group-bulk-licenses_ea2f270345ce269.png||height="430" width="586"]]
62 -
63 -//Seat management for Skyward Aviation Academy — 4 assigned seats and 6 unassigned, with assign/unassign controls.//
64 -
65 -== 4.1 Assigning a Seat ==
66 -
67 -For unassigned seats, enter the recipient’s OCID and click the assign button. The system will:
68 -
69 -* Create a subscription record for the recipient
70 -* Update the seat status to “assigned”
71 -* Increment the used_seats counter on the license
72 -* Log an adds/removals event with reason code GROUP_SEAT_ASSIGNED
73 -
74 -== 4.2 Unassigning a Seat ==
75 -
76 -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.
77 -
78 -== 4.3 Transferring a Seat ==
79 -
80 -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).
81 -
82 -== 4.4 Resizing ==
83 -
84 -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.
85 -
86 -= 5. Bulk Individual Provisioning =
87 -
88 -For bulk individual licenses, use the bulk seat assignment endpoint to provision recipients in batch. Two input methods are supported:
89 -
90 -* CSV file upload — The CSV must have an “ocid” column header. Each row creates a subscription.
91 -* Comma-separated OCID list — Enter OCIDs directly in the input field.
92 -
93 -Each provisioned recipient is logged with reason code BULK_GROUP_NEW.
94 -
95 -= 6. Group Admins =
96 -
97 -Group admins are users authorized to manage seat assignments for a specific license. There are two roles:
98 -
99 -|**Role**|**Description**
100 -|**Owner**|Full management access. The purchaser is automatically added as owner. Cannot be removed from the admin panel.
101 -|**Manager**|Can assign, unassign, and transfer seats. Can be added or removed by other admins.
102 -
103 -Group admins are managed from the seat detail page under the “Group Admins” section.
104 -
105 -= 7. License Lifecycle =
106 -
107 -|**Status**|**Description**
108 -|**Active**|License is in effect. Seats can be assigned/unassigned.
109 -|**Expired**|License end_date has passed. A daily cron job (group_license_expiry.php) transitions active licenses to expired and unassigns all seats.
110 -|**Cancelled**|Manually cancelled by an admin. All active seats are unassigned.
111 -|**Suspended**|Temporarily suspended (e.g., for non-payment). Seats remain assigned but may not grant new access.
112 -
113 -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.
114 -
115 -= 8. Reporting =
116 -
117 -Group license recipients have real subscriptions and appear in all standard fulfillment reports. The subscription_source field distinguishes group subscriptions from individual ones:
118 -
119 -* RPT-01 — Group recipients counted by classification. Optional source breakdown available.
120 -* RPT-09 — Group-specific reason codes appear in the adds/removals report.
121 -* RPT-19 — Group recipients with valid addresses appear in the mail file.
122 -
123 -= 9. Setup & Configuration =
124 -
125 -Navigate to Fulfillment › Setup › Group License Settings to configure:
126 -
127 -|**Setting**|**Default**|**Description**
128 -|**Enable group licenses**|Off|Master toggle for the group license feature
129 -|**Maximum seats per license**|1000|Upper limit on seats per license
130 -|**Default license duration (days)**|365|Default duration when end_date is not specified
131 -
132 -= 10. Permissions =
133 -
134 -Group license management requires the FULFILLMENT_GROUP_MANAGE permission module. Superadmin users automatically have access.
135 -
136 -FULFILLMENT_VIEW is sufficient for read-only access to the license list. Creating, cancelling, and managing seats requires FULFILLMENT_GROUP_MANAGE.
137 -
138 -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.
139 -
140 -= 11. Subscriber Self-Service (Seat Manager Portal) =
141 -
142 -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.
143 -
144 -== 11.1 Accessing the Seat Manager ==
145 -
146 -The seat manager portal is located at:
147 -
148 -//https:~/~/yoursite.onecount.net/onecount/flexreg/manage-seats.php?brand=YOURBRAND//
149 -
150 -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.
151 -
152 -== 11.2 My Group Licenses ==
153 -
154 -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.
155 -
156 -[[image:fulfillment-group-bulk-licenses_d2aa6c02ee324f44.png||height="366" width="586"]]
157 -
158 -//The subscriber-facing “My Group Licenses” view showing Skyward Aviation Academy with 4/10 seats used.//
159 -
160 -Click “Manage Seats” to open the seat assignment page for that license.
161 -
162 -== 11.3 Managing Seats ==
163 -
164 -The seat detail page shows every seat in the license with its current assignment status and available actions:
165 -
166 -[[image:fulfillment-group-bulk-licenses_fe51b9919ebd7117.png||height="366" width="586"]]
167 -
168 -//Seat management for Skyward Aviation Academy — 4 assigned seats with Unassign/Transfer controls, 6 unassigned seats with Assign controls.//
169 -
170 -Available actions for group admins:
171 -
172 -|**Action**|**How**|**What Happens**
173 -|**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.”
174 -|**Unassign**|Click Unassign on an occupied seat (confirmation required)|The seat returns to the available pool. The used-seats counter decrements.
175 -|**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.
176 -
177 -== 11.4 What Group Admins Cannot Do ==
178 -
179 -The subscriber self-service portal intentionally omits certain actions that are reserved for backend administrators:
180 -
181 -* Resize the license (change total seat count)
182 -* Cancel the license
183 -* Add or remove group admins
184 -* Change the license type, product, or dates
185 -
186 -These operations require the FULFILLMENT_GROUP_MANAGE backend permission and are performed from the admin panel’s Group Licenses page.
187 -
188 -== 11.5 Security ==
189 -
190 -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,1 +1,0 @@
1 -XWiki.admin
Size
... ... @@ -1,1 +1,0 @@
1 -86.7 KB
Content
fulfillment-group-bulk-licenses_ba0c4d5b8a553f45.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.admin
Size
... ... @@ -1,1 +1,0 @@
1 -104.8 KB
Content
fulfillment-group-bulk-licenses_d2aa6c02ee324f44.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.admin
Size
... ... @@ -1,1 +1,0 @@
1 -20.1 KB
Content
fulfillment-group-bulk-licenses_ea2f270345ce269.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.admin
Size
... ... @@ -1,1 +1,0 @@
1 -68.2 KB
Content
fulfillment-group-bulk-licenses_fe51b9919ebd7117.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.admin
Size
... ... @@ -1,1 +1,0 @@
1 -66.3 KB
Content