This KB article contains a list of error messages which might be returned by the scripts used for conversion from the Syndication Partner Program to the Cloud Solution Provider Program (see Odin Automation Premium Office 365 Integration Provider's Guide >> Conversion from Syndication Partner Program to CSP Program). You can use the list to analyse and resolve conversion problems.

Table of Contents

prepareMOSI2CSP.py

Error Message Template Cause Resolution
Failed to find the record in the cache file for the MOSI customer {ID}. This problem is related to the mosi2csp_mapping.csv file, which is an auxiliary file created and used by the conversion scripts. The file contains mappings between customer accounts and their customer tenants. Mappings are added to the file in the preparation step of the conversion procedure. The mapping between a customer account and its customer tenant is added to the file only if the customer tenant is ready for conversion. As a result, a customer tenant can be rolled back only if it was prepared for conversion.

The problem is that the customer tenant cannot be rolled back because the mosi2csp_mapping.csv auxiliary file does not contain any info of the customer tenant.
Make sure that the customer tenant is in the group of the customer tenants which were previously prepared for conversion.
Unable to prepare the OA customer account {ID} because the Office 365 Tenant resource {ID} has the status {ID} whereas the expected status is 'aps:ready'. A customer tenant of a customer account is represented by one or more APS resources of the http://www.parallels.com/Office365/Tenant/1.2 APS type (tenant APS resources).

The problem is that the tenant APS resource of the customer account is not ready for conversion because the status of the tenant APS resource differs from aps:ready.

Note the following:
  • Versions of APS resources may vary depending on versions of the Office 365 application.
  • The definition of an APS type can be obtained from the .schema file of the APS type (see Office365-x.x.x-x.app.zip / schemas).
Try finding and restarting failed or pending tasks of the customer account. If this does not help, create a third-line support ticket.
Unable to prepare the OA customer account {ID} (MOSI customer {ID}) because there are no Office 365 offers. The customer tenant of the customer account does not have any active cloud subscription. Either make some of the cloud subscriptions active through Odin Automation or remove the customer account from the input CSV file of the script.
The primary domain of the MOSI customer {ID} (OA customer account {ID}) is ambiguous. A customer tenant of a customer account might be represented by several APS resources of the http://www.parallels.com/Office365/Tenant/1.2 APS type (tenant APS resources). One of the tenant APS resources must be a master tenant APS resource. The properties subdomain and default_admin_login of a master tenant APS resource must not be null, whereas the same properties of all other tenant APS resources must be null.

The problem is that there is one or more other tenant APS resources whose subdomain propertes are not null.

Note the following:
  • The choice of a master tenant APS resource is arbitrary.
  • Versions of APS resources may vary depending on versions of the Office 365 application.
  • Names of properties of APS resources may vary depending on versions of the Office 365 application.
  • The definition of an APS type can be obtained from the .schema file of the APS type (see Office365-x.x.x-x.app.zip / schemas).
Set the subdomain property of all other tenant APS resources to null. For example:
  1. Write down the identifier of the customer account and the identifier of the customer tenant.
  2. Log in to the OA Operation Management Node.
  3. Obtain an APS token for the customer account by using the curl -d '<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>pem.APS.getAccountToken</methodName><params><param><value><struct><member><name>account_id</name><value><i4>CUSTOMER_ACCOUNT_ID</i4></value></member><member><name>subscription_id</name><value><i4>0</i4></value></member></struct></value></param></params></methodCall>' 'http://localhost:8440' command.
  4. Obtain all tenant APS resources of the customer tenant by using the curl -k -X GET -H 'APS-Token:APS_TOKEN' 'https://localhost:6308/aps/2/resources?implementing(http://www.parallels.com/Office365/Tenant/1.2),eq(ms_account_id,CUSTOMER_TENANT_ID)' command.
  5. Identify the master tenant APS resource by finding the tenant APS resource where both the subdomain property and the default_admin_login property are not null.
  6. Find all other tenant APS resources where the subdomain property is not null. Write down the identifiers of the tenant APS resources.
  7. Set the subdomain property to null for the tenant APS resources you found in the previous step. To do this, you can use the curl -k -X PUT -H 'APS-Token:APS_TOKEN' -d '{"aps":{"type":"http://www.parallels.com/Office365/Tenant/1.2"},"subdomain":null}' 'https://localhost:6308/aps/2/resources/APS_RESOURCE_ID' command.
There is one or more tasks related with the subscription(s) {ID} of the OA customer account. The Office 365 subscriptions cannot pass validation because there are pending or failed tasks related to them. Make sure that all tasks of the Office 365 subscriptions are processed.
Failed to roll back the MOSI customer {ID}: {REASON}. The customer tenant is not rolled back due to an error. Analyse and fix the error.
Failed to resolve the MS tenant id of the MOSI customer {ID}: {REASON}. The Microsoft Tenant ID of the customer tenant cannot be obtained due to an error. Analyse and fix the error.
Unable to disable subscriptions {ID}: {REASON}. The Office 365 subscriptions cannot be put on administrative hold due to an error. Analyse and fix the error.
Unable to prepare OA customer account {ID}: {REASON}. The customer account cannot be prepared for conversion due to an error. Analyse and fix the error.
Unable to obtain cloud subscriptions: {REASON}. Cloud subscriptions of customer tenants of a customer account cannot be obtained from the Microsoft cloud due to an error. Analyse and fix the error.
Unable to prepare the OA customer account {ID} (MOSI customer {ID}) because there is no Office 365 default domain available. A customer tenant of a customer account might be represented by several APS resources of the http://www.parallels.com/Office365/Tenant/1.2 APS type (tenant APS resources). One of the tenant APS resources must be a master tenant APS resource. The properties subdomain and default_admin_login of a master tenant APS resource must not be null, whereas the same properties of all other tenant APS resources must be null.

The problem is that the default_admin_login property of the master tenant APS resource of the customer tenant is null.

Note the following:
  • The choice of a master tenant APS resource is arbitrary.
  • Versions of APS resources may vary depending on versions of the Office 365 application.
  • Names of properties of APS resources may vary depending on versions of the Office 365 application.
  • The definition of an APS type can be obtained from the .schema file of the APS type (see Office365-x.x.x-x.app.zip / schemas).
Set the default_admin_login property of the master tenant APS resource of the customer tenant. For example:
  1. Write down the identifier of the customer account and the identifier of the customer tenant.
  2. Log in to the OA Operation Management Node.
  3. Obtain an APS token for the customer account by using the curl -d '<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>pem.APS.getAccountToken</methodName><params><param><value><struct><member><name>account_id</name><value><i4>CUSTOMER_ACCOUNT_ID</i4></value></member><member><name>subscription_id</name><value><i4>0</i4></value></member></struct></value></param></params></methodCall>' 'http://localhost:8440' command.
  4. Obtain all tenant APS resources of the customer tenant by using the curl -k -X GET -H 'APS-Token:APS_TOKEN' 'https://localhost:6308/aps/2/resources?implementing(http://www.parallels.com/Office365/Tenant/1.2),eq(ms_account_id,CUSTOMER_TENANT_ID)' command.
  5. Identify the master tenant APS resource by finding the tenant APS resource where the subdomain property is not null. Write down the value of the property and the identifier of the master tenant APS resource.
  6. Log in to the Microsoft Partner Center (https://partnercenter.microsoft.com/).
  7. Go to Dashboard > Customers.
  8. Find the customer tenant using the value of the subdomain property.
  9. Click on the name of the customer tenant.
  10. Go to Users and licenses.
  11. Find the default administrative user of the customer tenant. Typically, a default administrative user has the Global admin (has full permissions) role and its email address looks like admin@VALUE_OF_SUBDOMAIN_PROPERTY.onmicrosoft.com. Write down the email address of the default administrative user.
  12. Set the default_admin_login property for the master tenant APS resource. To do this, you can use the curl -k -X PUT -H 'APS-Token:APS_TOKEN' -d '{"aps":{"type":"http://www.parallels.com/Office365/Tenant/1.2"},"default_admin_login":"EMAIL_OF_DEFAULT_ADMIN_USER"}' 'https://localhost:6308/aps/2/resources/APS_RESOURCE_ID' command.
The domain {DOMAIN} uses the DNS hosting service from the subscription {ID}. Either switch the DNS hosting service to the 'External' mode or move the domain to a separate domain subscription. The customer tenant cannot be converted because it has the Office 365 subscription whose DNS Hosting resource is in use by the domain.

In order not to affect customer data, the DNS Hosting resource must be processed manually taking into account the specifics of the resource.
Analyse the domain and consider the following options:
  • The domain is a domain registered elsewhere and the DNS hosting service is not required for the domain (there are no service or custom DNS records). This means that Hosting type can be set to External for the domain.
  • The domain is a domain registered elsewhere and the DNS hosting service is required for the domain (there are service or custom DNS records). This means that the domain can be moved to another subscription which includes a similar DNS Hosting resource. For example: log in to the customer control panel; set Hosting type to External for the domain; while setting Hosting type to Internal for the domain, choose a non-Office 365 subscription.
The subscription {ID} has a nonzero limit for the resource {ID}. The resource does not relate to the Office 365 application and the conversion of such a subscription is not supported. Either exclude the customer account from the conversion list or set the limit of the resource to zero if you are completely sure that customer data will not be affected. Office 365 subscriptions including non-Office 365 resources can be processed by the script only if the limits of the resources are zero.

In order not to affect customer data, the resource must be processed manually taking into account the specifics of the resource.
Analyse the resource. If setting the limit of the resource to zero does not affect customer data, set the limit to zero. Otherwise, contact the Odin Automation support team to obtain assistance in processing the resource.
Unable to prepare the OA customer account {ID}: two subscriptions {ID} and {ID} have the same MOSI Customer Id {ID}. A customer account can have several Office 365 APS 1.2 subscriptions and each of the Office 365 APS 1.2 subscriptions must belong to its own customer tenant.

The problem is that the two Office 365 APS 1.2 subscriptions belong to the same customer tenant.
Create a third-line support ticket.
  • Unable to prepare the OA customer account {ID} because there are no Office 365 tenant resources available.
  • Failed to roll back the OA customer account {ID} because there are no Office 365 resources available.
  • Unable to prepare the OA customer account {ID} because there are no Office 365 resources available.
The script tries to find Office 365 subscriptions (Syndication Partner Program) of the customer account, but nothing is found.

Possible reasons:
  • All Office 365 subscriptions of the customer account are converted.
  • The script tries to find Office 365 APS 1.2 subscriptions (Syndication Partner Program), whereas the customer account has only Office 365 APS 2 subscriptions (Syndication Partner Program).
  • The script tries to find Office 365 APS 2 subscriptions (Syndication Partner Program), whereas the customer account has only Office 365 APS 1.2 subscriptions (Syndication Partner Program).
  • The customer account has Office 365 APS 2 subscriptions (Syndication Partner Program), but they do not belong to the application instance specified in the --mosi-app-instance-id input parameter.
Check all Office 365 subscriptions of the customer account. Check the input parameters of the script.

completeMOSI2CSP.py

Error Message Template Cause Resolution
Unable to import the ms customer with tenant id {ID}. {REASON}. The customer tenant cannot be processed by the script due to an error. Analyse and fix the error.
  • Subscription with id {ID} is not disabled.
  • Expected subscription status is 80 (Administrative Hold), actual status is {STATUS}.
All Office 365 subscriptions of customer tenants of a customer account are put on administrative hold to prevent the customer tenants from being modified during conversion.

Possible reasons:
  • The customer account was subscribed to an Office 365 service plan when its customer tenants were being converted and MOSI communication was disabled for the customer tenants.
  • The Office 365 subscription was released from administrative hold by mistake.
Cancel the Office 365 subscription. If it is necessary, subscribe the customer account again when the conversion of the customer tenants of the customer account is completed.
Empty ""IN"" operator value list passed. In order to switch all Office 365 subscriptions of a customer tenant of a customer account from Office 365 syndication service plans to Office 365 CSP service plans, the script tries to find suitable Office 365 CSP service plans in the allowed upgrade lists of the Office 365 syndication service plans.

The error appears when the script cannot find suitable Office 365 CSP service plans in the allowed upgrade lists of the Office 365 syndication service plans.
Check all Office 365 subscriptions of the customer account, and make sure that the Office 365 syndication service plans of the Office 365 subscriptions contain suitable Office 365 CSP service plans in their allowed upgrade lists. For example:
  1. In OA Billing, select an Office 365 subscription which is based on an Office 365 syndication service plan.
  2. On the General tab, click on the name of the Office 365 syndication service plan.
  3. On the Upgrades tab, make sure that there is one or more suitable Office 365 CSP service plans.
The source subscription '...' includes the non-Office 365 resources [...] which are not represented in the target service template '...'. In order to switch all Office 365 subscriptions of a customer tenant of a customer account from Office 365 syndication service plans to Office 365 CSP service plans, the script tries to find suitable Office 365 CSP service plans in the allowed upgrade lists of the Office 365 syndication service plans.

The problem is that the allowed upgrade list of the Office 365 syndication service plan of the Ofice 365 subscription contains Office 365 CSP service plans, but none of them includes the same non-Office 365 resources as the Office 365 syndication service plan includes.
Compare the Office 365 syndication service plan/service template and the Office 365 CSP service plans/service templates; include all the necessary non-Office 365 resources into the Office 365 CSP service plans/service templates.
The cloud subscriptions ... do not belong to any subscription in Odin Automation. If necessary, you can import them using the import scripts. The error appears when a customer tenant has cloud subscriptions which do not belong to any subscription in Odin Automation. If you need to import the cloud subscriptions of the customer tenant into Odin Automation, you can do this by running the import scripts readCSPAccounts.py and importSubsCSP.py.

importSubsCSP.py

Error Message Template Cause Resolution
Unable to find any OA customer account for the customer tenant with the CSP Id {ID}. The customer account of the customer tenant cannot be found. Check if the customer tenant belongs to the application instance specified in the --csp-app-instance-id input parameter of the script. If the customer tenant belongs to the application instance, create a third-line ticket.
The zero limit is specified for the resource rate {ID} of the service plan {ID}. There is an invalid row in the input CSV file containing mappings between Office 365 APS 2 service plans and cloud subscriptions. The limits of resource rates of Office 365 resources must not be set to zero since the limits of cloud subscritions are always nonzero. Check and fix the data of the row.
The service plan {ID} does not contain the resource rate {ID}. There is an invalid row in the input CSV file containing mappings between Office 365 APS 2 service plans and cloud subscriptions. The Office 365 APS 2 service plan specified in the OSAServicePlanId column of the row does not have the resource rate specified in the ResourceRateLimits column of the row. Check and fix the data of the row.
Offer limits in SA and in the Microsoft cloud do not match... There is an invalid row in the input CSV file containing mappings between Office 365 APS 2 service plans and cloud subscriptions. The limits of the cloud subscriptions specified in the MSSubscriptionIDs column of the row and the resource limits specified in the ResourceRateLimits column of the row do not match. Check and fix the data of the row.
Cannot load the customer data for the tenant: {REASON}. Properties of the customer tenant cannot be obtained from the Microsoft cloud due to an error. Analyse and fix the error.
The SA customer account {ID} does not exist. There is an invalid row in the input CSV file containing mappings between Office 365 APS 2 service plans and cloud subscriptions. The customer account specified in the OSACustomerID column of the row does not exist in Odin Automation. Check and fix the data of the row.
It is impossible to validate the existence of the CSP customer {ID} due to the following error: {REASON}. Properties of the customer tenant cannot be obtained from the Microsoft cloud due to an error. Analyse and fix the error.
It is impossible to validate the existence of the SA customer account {ID} due to the following error: {REASON}. The AccountDetailsGet_API OA Billing method returns an error when the script tries to obtain properties of the customer account. Analyse and fix the error.
The CSP customer {ID} does not exist. There is an invalid row in the input CSV file containing mappings between Office 365 APS 2 service plans and cloud subscriptions. The customer tenant specified in the CSPAccountId column of the row does not exist in the Microsoft cloud. Check and fix the data of the row.
The DB inconsistency detected: OsaCustomerAccount found {NUMBER}, should be '1'. There is a database inconsistency. Create a third-line support ticket.
The CSP customer {ID} does not have the CSP subscription with the identifier {ID}. There is an invalid row in the input CSV file containing mappings between Office 365 APS 2 service plans and cloud subscriptions. The customer tenant does not have the cloud subscription specified in the MSSubscriptionIDs column of the row. Check and fix the data of the row.
The subscription {ID} has the add-on {ID} which was not included in the list of the subscriptions being imported. There is an invalid row in the input CSV file containing mappings between Office 365 APS 2 service plans and cloud subscriptions. A cloud subscription and all of its addon cloud subscriptions must be mapped to the same Office 365 APS 2 service plan.

The problem is that the cloud subscription has the addon cloud subscription, but the MSSubscriptionIDs column of the row only contains the cloud subscription.
Check and fix the data of the row.
The parent subscription {ID} of the add-on {ID} was not included in the list of the subscriptions being imported. There is an invalid row in the input CSV file containing mappings between Office 365 APS 2 service plans and cloud subscriptions. A cloud subscription and all of its addon cloud subscriptions must be mapped to the same Office 365 APS 2 service plan.

The problem is that the cloud subscription has the addon cloud subscription, but the MSSubscriptionIDs column of the row only contains the addon cloud subscription.
Check and fix the data of the row.
The service plan {ID} does not contain the period with the identifier {ID}. There is an invalid row in the input CSV file containing mappings between Office 365 APS 2 service plans and cloud subscriptions. The Office 365 APS 2 service plan specified in the OSAServicePlanId column of the row does not have the subscription period specified in the OSAPlanPeriodID column of the row. Check and fix the data of the row.
The plan period {ID} of the service plan {ID} is trial but trial plan periods are not supported. There is an invalid row in the input CSV file containing mappings between Office 365 APS 2 service plans and cloud subscriptions. The CSP Program does not support trial cloud subscriptions, but the subscription period specified in the OSAPlanPeriodID column of the row is trial. Check and fix the data of the row.
The property {PROPERTY} is not specified. There is an invalid row in the input CSV file containing mappings between Office 365 APS 2 service plans and cloud subscriptions. The column of the row is empty. Specify a value depending on the purpose of the column.
Subscriptions [{ID1},{ID2}…] have duplicates in the list of the subscriptions being imported. There is an invalid row in the input CSV file containing mappings between Office 365 APS 2 service plans and cloud subscriptions. There are duplicates of cloud subscriptions in the MSSubscriptionIDs column of the row. Remove all duplicates from the MSSubscriptionIDs column of the row.
The CSP customer {ID} is already bound to the SA customer account {ID}. There is an invalid row in the input CSV file containing mappings between Office 365 APS 2 service plans and cloud subscriptions. The customer tenant specified in the CSPAccountId column of the row is already bound to the customer account in Odin Automation. Check and fix the data of the row.
The cloud subscriptions [{ID1},{ID2}…] belong to the same offer {CSPOfferID} in the list of the subscriptions being imported. Cloud subscriptions of the same offer must not be placed into the same Office 365 APS 2 subscription. Split the cloud subscriptions so that each cloud subscription is placed into its own Office 365 APS 2 subscription. For instance:
  1. Find the the row containing the cloud subscriptions.
  2. Add a necessary number of copies of the row so that each cloud subscription has its own row.
  3. Spread the cloud subscriptions among the rows and adjusts the values of the ResourceRateLimits and MSSubscriptionIDs columns.
  • The appropriate service plan can not be found.
  • The service plan with the identifier {ID} does not exist.
The Office 365 APS 2 service plan specified in the input CSV file containing mappings between Office 365 APS 2 service plans and cloud subscriptions cannot be found.

Possible reasons:
  • The Office 365 APS 2 service plan does not exist in Odin Automation.
  • The vendor account of the customer account specified in the input CSV file containing mappings between Office 365 APS 2 service plans and cloud subscriptions does not have the Office 365 APS 2 service plan.
  • The Office 365 APS 2 service plan does not belong to the application instance specified in the --csp-app-instance-id input parameter of the script.
Check and correct the following:
  • The input parameters of the script.
  • The input CSV file containing mappings between Office 365 APS 2 service plans and cloud subscriptions.
The CSP subscription {ID} already exists in the local database and is bound to the SA customer account with the internal identifier {ID}. There is an invalid row in the input CSV file containing mappings between Office 365 APS 2 service plans and cloud subscriptions. The customer tenant as well as its cloud subscriptions is converted, but the cloud subscription of the customer tenant is specified in the MSSubscriptionIDs column of the row. Check and fix the data of the row.
The included amount of the resource rate {ID} does not match the limit of the cloud subscription {ID}. There is an invalid row in the input CSV file containing mappings between Office 365 APS 2 service plans and cloud subscriptions. The problem is that the included amount of the resource rate specified in the ResourceRateLimits column of the row is greater than the limit of the cloud subscription specified in the MSSubscriptionIDs column of the row. Check and fix the data of the row.
The included amount of the resource rate {ID} is not zero whereas the corresponding cloud subscription {ID} is disabled. The following ways of mapping cloud subscriptions to Office 365 APS 2 service plans are possible:
  • Active cloud subscriptions are mapped to an Office 365 APS 2 service plan. Each cloud subscription is mapped to a separate resource rate of the Office 365 APS 2 service plan. The included amounts of the resource rates must not be greater than the limits of the cloud subscriptions because the limits of the cloud subscriptions are used to set the limits of the corresponding resources in the appropriate Office 365 APS 2 subscription.
  • Suspended cloud subscriptions are mapped to an Office 365 APS 2 service plan. Each cloud subscription is mapped to a separate resource rate of the Office 365 APS 2 service plan. The included amounts of the resource rates must not be greater than the limits of the cloud subscriptions because the limits of the cloud subscriptions are used to set the limits of the corresponding resources in the appropriate Office 365 APS 2 subscription. The Office 365 APS 2 subscription is put on administrative hold since all the cloud subscriptions are suspended.
  • Active and suspended cloud subscriptions are mapped to an Office 365 APS 2 service plan. Each cloud subscription is mapped to a separate resource rate of the Office 365 APS 2 service plan. The included amounts of the resource rates of the active cloud subscriptions must not be greater than the limits of the active cloud subscriptions because the limits of the active cloud subscriptions are used to set the limits of the corresponding resources in the appropriate Office 365 APS 2 subscription. The included amounts of the resource rates of the suspended cloud subscriptions must be zero because the limits of the corresponding resources are set to zero in the appropriate Office 365 APS 2 subscription.
The problem is that there is a row in the input CSV file containing mappings between Office 365 APS 2 service plans and cloud subscriptions where the MSSubscriptionIDs column contains active and suspended cloud subscriptions, but the included amount of the resource rate of the suspended cloud subscription is not zero.
Split the cloud subscriptions specified in the MSSubscriptionIDs column of the row into active and suspended subscriptions. For instance:
  1. Create a copy of the row.
  2. Adjusts the values of the ResourceRateLimits and MSSubscriptionIDs columns in the first row so that the row contains only active cloud subscriptions.
  3. Adjusts the values of the ResourceRateLimits and MSSubscriptionIDs columns in the second row so that the row contains only suspended cloud subscriptions.
Also, you can try using another Office 365 APS 2 service plan.
The resource rates [{ID1}, {ID2}…] of the service plan {ID} are not suitable because the same resource rate must not be simultaneously used by active and disabled cloud subscriptions. Active and suspended cloud subscriptions can be mapped to the same Office 365 APS 2 service plan if the following requirements are satisfied:
  • Each cloud subscription is mapped to a separate resource rate of the Office 365 APS 2 service plan.
  • The included amount of the resource rate of an active cloud subscription is not greater than the limit of the active cloud subscription.
  • The included amount of the resource rate of a suspended cloud subscription is zero.
Split the row containing the active and suspended cloud subscriptions into separate rows where each row contains either active or suspended subscriptions (see the example above).

Internal content