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 8.1
edited by Admin User
on 2026/09/02 09:31
Change comment: There is no comment for this version

Summary

Details

Page properties
Title
... ... @@ -1,0 +1,1 @@
1 +How-To: Bulk/Group Subscriptions
Content
... ... @@ -1,0 +1,190 @@
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,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_ea2f270345ce269.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.admin
Size
... ... @@ -1,0 +1,1 @@
1 +68.2 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