Changes for page How-To: Bulk/Group Subscriptions
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
on 2026/09/02 09:30
Change comment:
Changed document syntax from [XWiki 2.1] to [xwiki/2.1].
To version 7.1
edited by Admin User
on 2026/09/02 09:30
on 2026/09/02 09:30
Change comment:
There is no comment for this version
Summary
-
Page properties (2 modified, 0 added, 0 removed)
-
Attachments (0 modified, 5 added, 0 removed)
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_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