Symptoms

An Office 365 subscription APS 1.2 to APS 2.0 upgrade fails with the output below:

# python upgradeAPS1ToAPS2.py --nb-processes 1 --o365APS1-app-id 107 --o365APS2-app-instance-id 178 --subscriptions 1000050 --target-plan-id 345 --billing-system pba --resource-mapping ResourceRateMappings.json --gateway-url https://mosigw.example.com/Office365_1/HTTPEndpoint.aspx
...
Subscription #1000050: Offer limits don't match. APS1 offer limits: {'ff44f98d-3b1f-4250-ab63-8ab1e6f15055': 7, 'b86aa4c7-5c7e-445b-8c97-227dbde5787f': 1, '97b27d34-a29d-4a68-b35f-3a34911a765a': 20}; APS2 offer limits: {'ff44f98d-3b1f-4250-ab63-8ab1e6f15055': 7, 'b86aa4c7-5c7e-445b-8c97-227dbde5787f': 21}

The subscription has the following offer limits:

Offer nameProvisioning IDOffer IDLimit
Office 365 Small BusinessLITEPACKb86aa4c7-5c7e-445b-8c97-227dbde5787f1
Office 365 Small Business PremiumLITEPACK_P2ff44f98d-3b1f-4250-ab63-8ab1e6f150557
SharePoint Online Storage for Premium Small Business AKA Office 365 Extra File Storage for Small BusinessSHAREPOINTSTORAGE97b27d34-a29d-4a68-b35f-3a34911a765a20

Cause

One of resource types is mapped incorrectly in ResourceRateMappings.json:

    ...
   {
        "mappedTo": 1104,
        "poaRTs": [
            1000353
        ],
        "rtId": 1000353,
        "rrId": 229
    },

   {
        "mappedTo": 1104,
        "poaRTs": [
            1000171
        ],
        "rtId": 1000171,
        "rrId": 108
    },
    ...

In the example above the resource type #1000353 SharePoint Online Storage for Premium Small Business is mapped to the resource rate #1104 NEW: Office 365 Small Business. At the same time resource type ID #1000171 Office 365 Small Business is mapped to #1104 too, therefore total license number is:

20 (#1000353) + 1 (#1000171) = 21 (#1104 NEW: Office 365 Small Business)

The example below illustrates Office 365 resources included to the current service template and target service plan:

Resource types of the service template #5 NEW Office 365 Small Business:

RT ID           Name                                              Provisioning ID

### APS 1.2
1000171      Office 365 Small Business                             LITEPACK
1000177      Office 365 Small Business Premium                     LITEPACK_P2
1000353      SharePoint Online Storage for Premium Small Business  SHAREPOINTSTORAGE

### APS 2.0
1001388      NEW: Office 365 Small Business                         LITEPACK
1001362      NEW: Office 365 Small Business Premium                 LITEPACK_P2
1001425      NEW: Office 365 Extra File Storage for Small Business  SHAREPOINTSTORAGE

Resource rate IDs of the service plan #9 NEW Office 365 Small Business:

### APS 1.2
108     Office 365 Small Business
110     Office 365 Small Business Premium
229     SharePoint Online Storage for Premium Small Business

### APS 2.0
1104    NEW: Office 365 Small Business
1105    NEW: Office 365 Small Business Premium
1527    NEW: Office 365 Extra File Storage for Small Business

Resolution

To fix the issue the following part of JSON has to be changed:

  {
        "mappedTo": 1104, <------------
        "poaRTs": [
            1000353
        ],
        "rtId": 1000353,
        "rrId": 229
    },

to:

   {
        "mappedTo": 1527, <--------------
        "poaRTs": [
            1000353
        ],
        "rtId": 1000353,
        "rrId": 229
    },

and restart the script.

Internal content