Skip to content

Commit 057f349

Browse files
authored
Merge pull request #25 from jukkan/copilot/refresh-power-platform-capacity-values
Refresh Power Platform capacity entitlements to August 2026
2 parents c724b1a + 9c60cb4 commit 057f349

7 files changed

Lines changed: 65 additions & 38 deletions

File tree

‎dataverse-capacity-calculator.jsx‎

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ const SKUS = [
257257
product_group: "PowerAppsPremium",
258258
license_type: "Base",
259259
eligible_for_default: true,
260-
default: { db_gb: 20, file_gb: 40 },
260+
default: { db_gb: 20, file_gb: 20 },
261261
accrual: { db_gb: 0.25, file_gb: 2 },
262262
accrues_capacity: true,
263263
},
@@ -268,7 +268,7 @@ const SKUS = [
268268
product_group: "PowerAutomatePremium",
269269
license_type: "Base",
270270
eligible_for_default: true,
271-
default: { db_gb: 20, file_gb: 40 },
271+
default: { db_gb: 20, file_gb: 20 },
272272
accrual: { db_gb: 0.25, file_gb: 2 },
273273
accrues_capacity: true,
274274
},
@@ -291,9 +291,9 @@ const SKUS = [
291291
product_group: "PowerAutomateProcess",
292292
license_type: "PerFlow",
293293
eligible_for_default: true,
294-
default: { db_gb: 15, file_gb: 20 },
295-
accrual: { db_gb: 0, file_gb: 0 },
296-
accrues_capacity: false,
294+
default: { db_gb: 20, file_gb: 2 },
295+
accrual: { db_gb: 0.05, file_gb: 0.2 },
296+
accrues_capacity: true,
297297
},
298298
{
299299
id: "copilot-studio",
@@ -306,7 +306,7 @@ const SKUS = [
306306
accrual: { db_gb: 0, file_gb: 0 },
307307
accrues_capacity: false,
308308
},
309-
// Process Mining (with 100 GB tenant cap)
309+
// Process Mining add-on
310310
{
311311
id: "process-mining",
312312
name: "Process Mining",
@@ -315,9 +315,8 @@ const SKUS = [
315315
license_type: "CapacityPack",
316316
eligible_for_default: false,
317317
default: { db_gb: 0, file_gb: 0 },
318-
accrual: { db_gb: 10, file_gb: 50 },
318+
accrual: { db_gb: 2, file_gb: 1000 },
319319
accrues_capacity: true,
320-
tenant_cap_db_gb: 100,
321320
},
322321
// D365 Customer Insights
323322
{
@@ -1004,7 +1003,7 @@ export default function DataverseCapacityCalculator() {
10041003
let addDb = count * sku.accrual.db_gb;
10051004
const addFile = count * sku.accrual.file_gb;
10061005

1007-
// Apply tenant cap for SKUs like Process Mining
1006+
// Apply per-SKU DB cap when Microsoft explicitly defines one
10081007
if (sku.tenant_cap_db_gb !== undefined) {
10091008
const existing = skuUsage[sku.id] || 0;
10101009
addDb = Math.min(
@@ -1482,9 +1481,8 @@ export default function DataverseCapacityCalculator() {
14821481
<div className="mt-8 p-4 bg-amber-50 border border-amber-200 rounded-lg text-xs text-amber-800">
14831482
<strong>Notes:</strong> Default capacity granted once per tenant —
14841483
highest tier wins. Per-user accrual stacks across all products. Log
1485-
capacity (2-3 GB) not shown. Process Mining has a 100 GB tenant cap
1486-
on DB accrual. Verify actual entitlements in Power Platform Admin
1487-
Center.
1484+
capacity (2-3 GB) not shown. Verify actual entitlements in Power
1485+
Platform Admin Center.
14881486
</div>
14891487

14901488
{/* Version indicator */}

‎mcp-server/README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ This repo intentionally documents the generic deployment pattern rather than one
318318
## Capacity rules implemented
319319

320320
- **Default capacity** — max of all eligible SKUs licensed (not additive across SKUs)
321-
- **Per-unit accrual** — per user/app/pack/bot, capped per-SKU where Microsoft specifies (e.g. Process Mining DB capped at 100 GB)
321+
- **Per-unit accrual** — per user/app/pack/bot, with per-SKU caps only where Microsoft explicitly defines them
322322
- **Attach licenses** — no accrual (Customer Insights attach = same default as base, still no accrual)
323323
- **Capacity add-ons** — 1 GB increments, tenant-pooled
324324
- **Pay-as-you-go environments** — 1 GB DB + 1 GB File each, independent of tenant pool

‎mcp-server/src/calculator.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export function calculateCapacity(
6363
let addDb = rawCount * sku.accrual.db_gb;
6464
const addFile = rawCount * sku.accrual.file_gb;
6565

66-
// Apply per-SKU tenant cap (e.g. Process Mining DB capped at 100 GB)
66+
// Apply per-SKU tenant cap when Microsoft explicitly defines one
6767
if (sku.tenant_cap_db_gb !== undefined) {
6868
const used = skuUsage[sku.id] || 0;
6969
addDb = Math.min(addDb, Math.max(0, sku.tenant_cap_db_gb - used));

‎mcp-server/src/server.test.js‎

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ test("calculateCapacity clamps negative addon and pay-as-you-go inputs to zero",
6262
);
6363

6464
assert.equal(result.tenant_pool.db_gb, 20.25);
65-
assert.equal(result.tenant_pool.file_gb, 42);
65+
assert.equal(result.tenant_pool.file_gb, 22);
6666
assert.equal(result.tenant_pool.breakdown.addons.db_gb, 0);
6767
assert.equal(result.tenant_pool.breakdown.addons.file_gb, 0);
6868
assert.equal(result.payg_environments.count, 0);
@@ -81,5 +81,36 @@ test("calculateCapacity floors license counts before applying accrual", () => {
8181
assert.equal(result.per_sku_breakdown.length, 1);
8282
assert.equal(result.per_sku_breakdown[0].count, 2);
8383
assert.equal(result.tenant_pool.db_gb, 20.5);
84-
assert.equal(result.tenant_pool.file_gb, 44);
84+
assert.equal(result.tenant_pool.file_gb, 24);
85+
});
86+
87+
test("calculateCapacity reflects the August 2026 Power Platform entitlement refresh", () => {
88+
const result = calculateCapacity(
89+
{
90+
licenses: [
91+
{ skuId: "pa-premium", count: 1 },
92+
{ skuId: "pautom-premium", count: 1 },
93+
{ skuId: "pautom-process", count: 3 },
94+
{ skuId: "process-mining", count: 2 },
95+
],
96+
},
97+
SKU_MAP
98+
);
99+
100+
assert.equal(result.tenant_pool.breakdown.default.db_gb, 20);
101+
assert.equal(result.tenant_pool.breakdown.default.file_gb, 20);
102+
103+
const processRow = result.per_sku_breakdown.find(
104+
(row) => row.skuId === "pautom-process"
105+
);
106+
const miningRow = result.per_sku_breakdown.find(
107+
(row) => row.skuId === "process-mining"
108+
);
109+
110+
assert.equal(processRow.db_gb, 0.15);
111+
assert.equal(processRow.file_gb, 0.6);
112+
assert.equal(miningRow.db_gb, 4);
113+
assert.equal(miningRow.file_gb, 2000);
114+
assert.equal(miningRow.capped, false);
115+
assert.equal(SKU_MAP["process-mining"].tenant_cap_db_gb, undefined);
85116
});

‎mcp-server/src/skus.js‎

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ export const SKUS = [
257257
product_group: "PowerAppsPremium",
258258
license_type: "Base",
259259
eligible_for_default: true,
260-
default: { db_gb: 20, file_gb: 40 },
260+
default: { db_gb: 20, file_gb: 20 },
261261
accrual: { db_gb: 0.25, file_gb: 2 },
262262
accrues_capacity: true,
263263
},
@@ -268,7 +268,7 @@ export const SKUS = [
268268
product_group: "PowerAutomatePremium",
269269
license_type: "Base",
270270
eligible_for_default: true,
271-
default: { db_gb: 20, file_gb: 40 },
271+
default: { db_gb: 20, file_gb: 20 },
272272
accrual: { db_gb: 0.25, file_gb: 2 },
273273
accrues_capacity: true,
274274
},
@@ -292,9 +292,9 @@ export const SKUS = [
292292
product_group: "PowerAutomateProcess",
293293
license_type: "PerFlow",
294294
eligible_for_default: true,
295-
default: { db_gb: 15, file_gb: 20 },
296-
accrual: { db_gb: 0, file_gb: 0 },
297-
accrues_capacity: false,
295+
default: { db_gb: 20, file_gb: 2 },
296+
accrual: { db_gb: 0.05, file_gb: 0.2 },
297+
accrues_capacity: true,
298298
},
299299
{
300300
id: "copilot-studio",
@@ -308,7 +308,7 @@ export const SKUS = [
308308
accrues_capacity: false,
309309
},
310310

311-
// ── Process Mining (tenant-capped DB accrual) ─────────────────────────────
311+
// ── Process Mining ──────────────────────────────────────────────────────────
312312
{
313313
id: "process-mining",
314314
name: "Power Automate Process Mining",
@@ -317,9 +317,8 @@ export const SKUS = [
317317
license_type: "CapacityPack",
318318
eligible_for_default: false,
319319
default: { db_gb: 0, file_gb: 0 },
320-
accrual: { db_gb: 10, file_gb: 50 },
320+
accrual: { db_gb: 2, file_gb: 1000 },
321321
accrues_capacity: true,
322-
tenant_cap_db_gb: 100,
323322
},
324323

325324
// ── D365 Customer Insights ─────────────────────────────────────────────────

‎specs.md‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,14 @@ Sku {
4545
log_gb: number | 0
4646
},
4747
accrues_capacity: bool, // false for D365 attach licenses except CI attach
48-
tenant_cap_db_gb?: number // optional cap (e.g. Process Mining 100 GB total)
48+
tenant_cap_db_gb?: number // optional cap if Microsoft explicitly specifies one per SKU
4949
}
5050
```
5151

5252
Populate this from:
5353

54-
* Power Platform Licensing Guide Dec 2025 (Power Apps, Power Automate, Power Pages tables).
55-
* Dynamics 365 Licensing Guide Dec 2025 capacity table for D365 product groups (default + accrual).
54+
* Power Platform Licensing Guide August 2026 (Power Apps, Power Automate, Power Pages tables).
55+
* Dynamics 365 Licensing Guide August 2026 capacity table for D365 product groups (default + accrual).
5656
* Microsoft Copilot Studio deck for Dataverse for Copilot Studio defaults.
5757

5858
The calculator doesn’t need the full guides if it has this SKU metadata.
@@ -115,11 +115,11 @@ for (sku, count) in licenses:
115115

116116
Rules:
117117

118-
1. Power Platform standalone SKUs (per Dec 2025 guide):
118+
1. Power Platform standalone SKUs (per August 2026 guide):
119119

120120
* Every Power Apps, Power Automate and Power Pages standalone subscription accrues additional Dataverse DB/File capacity.
121121
* Some SKUs also accrue Log capacity (mainly Power Pages capacity packs).
122-
* Process Mining add-on accrues large File capacity and some DB, with a 100 GB tenant cap on DB accrual.
122+
* Process Mining add-on accrues large File capacity and some DB with no separate tenant DB cap in the current August 2026 entitlement table.
123123
* Dataverse for Copilot Studio does **not** accrue extra per pack; it only has a tenant-level default.
124124

125125
2. Dynamics 365:
@@ -143,7 +143,7 @@ for (sku, count) in licenses:
143143
add_file = count * sku.accrual.file_gb
144144
add_log = count * sku.accrual.log_gb
145145

146-
# optional tenant cap by sku (e.g. Process Mining DB 100 GB)
146+
# optional tenant cap by sku when Microsoft explicitly states one
147147
if sku.tenant_cap_db_gb is not None:
148148
existing = sku_usage.get(sku.id, 0)
149149
add_db = min(add_db, max(0, sku.tenant_cap_db_gb - existing))
@@ -218,9 +218,9 @@ DataverseCapacityResult {
218218

219219
1. **Attach licenses:** No extra capacity except Customer Insights attach default = CI base default, but still no accrual.([Microsoft][1])
220220
2. **Dataverse for Teams:** Out of scope; no capacity add-ons; handled with separate limits.
221-
3. **Process Mining add-on:** Tenant cap of 100 GB on DB accrual from these licenses.
221+
3. **Process Mining add-on:** Uses the August 2026 entitlement values for the add-on: +2 GB DB and +1 TB File per license, without a separate tenant DB cap unless the guide explicitly says otherwise.
222222
4. **Units:** Guides mix MB and GB; calculator should convert everything to GB internally (1 GB = 1024 MB).
223223

224-
If you give this spec + a CSV/JSON of all SKUs with their Dec-2025 default/accrual numbers, a coding agent should have everything needed to implement an accurate interactive calculator.
224+
If you give this spec + a CSV/JSON of all SKUs with their August 2026 default/accrual numbers, a coding agent should have everything needed to implement an accurate interactive calculator.
225225

226226
[1]: https://www.microsoft.com/content/dam/microsoft/final/en-us/microsoft-brand/documents/Dynamics-365-Licensing-Guide-July-2024.pdf?utm_source=chatgpt.com "Dynamics 365 Licensing Guide"

‎src/App.jsx‎

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ const PRODUCT_TIERS = [
202202
id: "pp-premium",
203203
name: "Power Platform Premium",
204204
dbDefault: 20,
205-
fileDefault: 40,
205+
fileDefault: 20,
206206
priority: 4,
207207
description: "Power Apps and Power Automate Premium licenses",
208208
products: [
@@ -225,7 +225,7 @@ const PRODUCT_TIERS = [
225225
{
226226
id: "pp-workload",
227227
name: "Power Platform Workload",
228-
dbDefault: 15,
228+
dbDefault: 20,
229229
fileDefault: 20,
230230
priority: 5,
231231
description: "Per-app and process-based licenses",
@@ -241,10 +241,9 @@ const PRODUCT_TIERS = [
241241
{
242242
id: "pautom-process",
243243
name: "Power Automate Process",
244-
dbPerUser: 0,
245-
filePerUser: 0,
246-
noAccrual: true,
247-
tooltip: "Power Automate Process - No per-user capacity accrual",
244+
dbPerUser: 0.05,
245+
filePerUser: 0.2,
246+
tooltip: "Power Automate Process - 0.05 GB DB + 0.2 GB File per flow",
248247
},
249248
{
250249
id: "copilot-studio",

0 commit comments

Comments
 (0)