转换新的商业订阅

适用于:合作伙伴中心 |由世纪互联运营的合作伙伴中心 |美国政府Microsoft云合作伙伴中心

相应的角色

  • 全局管理员
  • 管理员代理

这些方法同时支持传统和新的商业源订阅。

注意

基于许可证的服务的新商业体验包括许多新功能,可供所有云解决方案提供商(CSP)使用。 有关详细信息,请参阅新商业体验概述

用于将客户的新商务订阅升级到目标订阅或将 NCE 试用版转换为付费订阅。 若要转换订阅,需要发出两个 API 请求。 首先 获取符合条件的转换 ,以获取可用于升级的 SKU。 然后 POST 转换 以执行转换。

获取转换资格

返回给定客户、订阅和请求类型的合格转换列表。 还返回目标订阅升级资格。 转换资格可能包括处于 EndofSaleWithConversions 状态的产品/服务。

先决条件

  • 合作伙伴中心身份验证中所述的凭据。 此方案支持使用独立应用和 App+User 凭据进行身份验证。

  • 客户 ID (customer-tenant-id)。 如果不知道客户的 ID,可以通过选择“客户”工作区,然后从客户列表中选择客户,然后选择“帐户”,在合作伙伴中心查找该 ID。 在客户的“帐户”页上,在“客户帐户信息”部分查找Microsoft ID Microsoft ID 与客户 ID (customer-tenant-id) 相同。

  • 初始订阅的订阅 ID。

GDAP 角色

至少需要以下 GDAP 角色之一:

  • 目录读取者
  • 全局读取者

注意

虽然此 API 适用于旧版和 NCE,但 GDAP 仅适用于旧版。

REST 请求

请求语法

方法 请求 URI
GET {baseURL}/v1/customers/{customer-tenant-id}/subscriptions/{subscription-id}/transitionEligibibility?eligibilityType={immediate, scheduled} HTTP/1.1

URI 参数

使用以下查询参数返回符合条件的转换。

名称 类型​​ 必需 说明
customer-tenant-id guid Y 对应于客户的租户的 GUID。
subscription-id guid Y 对应于初始订阅的 GUID。
eligibilityType string N 描述何时执行转换;可以立即或计划。 默认值为 Immediate

请求标头

有关详细信息,请参阅合作伙伴中心 REST 标头

请求正文

请求示例

GET https://api.partnercenter.microsoft.com/v1/customers/{customer-tenant-id}/subscriptions/{subscription-id}/transitionEligibilities?eligibilityType=immediate HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 18752a69-1aa1-4ef7-8f9d-eb3681b2d70a
MS-CorrelationId: 81b08ffe-4cf8-49cd-82db-5c2fb0a8e132
X-Locale: en-US

REST 响应

如果成功,此方法在响应正文中返回给定订阅的合格转换列表。

响应的成功和错误代码

每个响应都有一个 HTTP 状态代码,指示成功或失败以及更多的调试信息。 使用网络跟踪工具读取此代码、错误类型和其他参数。 有关完整列表,请参阅错误代码

资格错误

错误说明和含义。

错误说明 含义
无法转换订阅 - 源订阅未处于活动状态。 原始子状态不处于活动状态
无法转换订阅 - 尚未预配源订阅。 原始子履行日期未成功
转换类型不兼容 - 需要 AzureAD 订阅映射。 调用 GetSubscriptionUpgradeConflicts 时,LegacyCannotConvertSubscriptionId 错误
转换类型不兼容 - 存在许可证转移的冲突订阅。 如果任何Microsoft Entra 服务具有来自不同订阅的订阅 ID,请将其添加到冲突列表(包括使用旧版或新式购买流进行的购买)

订阅资格错误

如果目标订阅不符合升级到的条件,将返回以下原因之一。

如果源订阅是试用版,或者是否将资格类型指定为 Scheduled,则返回空列表。 只能转换为具有即时(也称为“中期”)转换的现有订阅,而不是计划的更改。

错误说明 错误代码
订阅未处于活动状态。 SubscriptionNotActive = 1
订阅位于取消窗口中。 SubscriptionInCancellationWindow = 2
订阅期限持续时间比源订阅的期限持续时间短。 SubscriptionTermDurationShorterThanSourceTermDuration = 3
订阅期限结束日期在源订阅期限结束日期之前。 订阅期限结束日期在源订阅期限结束日期之前。 = 4

响应示例

HTTP/1.1 200 OK
Content-Length: 138
Content-Type: application/json
MS-CorrelationId: 81b08ffe-4cf8-49cd-82db-5c2fb0a8e132
MS-RequestId: 18752a69-1aa1-4ef7-8f9d-eb3681b2d70a
Date: Fri, 26 Feb 2021 20:42:26 GMT

{
  "totalCount": 2,
  "items": [
    {
      "operationId": "1caf8ec7-62cc-4ab5-b35d-572d2a62974c",
      "catalogItemId": "CFQ7TTC0KZCR:0001:CFQ7TTC0K71H",
      "title": "Microsoft 365 E5 Test Sku Title",
      "description": "Microsoft 365 E5 Test Sku Description",
      "quantity": 1,
      "subscriptionEligibilities": [
        {
          "isEligible": false,
          "subscriptionId": "92301b7d-7598-4938-d6f2-d31e080e9da6",
          "subscriptionFriendlyName": "Microsoft 365 Business Premium",
          "subscriptionTermDuration": "P1M",
          "subscriptionBillingCycle": "monthly",
          "errors": [
            {
              "code": 3,
              "description": "The subscription's term duration is shorter than the source subscription's term duration."
            }
          ]
        },
        {
          "isEligible": true,
          "subscriptionId": "151467a1-4246-4a00-da7b-3405463d9b78",
          "subscriptionFriendlyName": "Microsoft 365 Business Premium",
          "subscriptionTermDuration": "P1Y",
          "subscriptionBillingCycle": "monthly",
          "errors": []
        }
      ],
      "eligibilities": [
        {
          "isEligible": true,
          "transitionType": "transition_only",
          "errors": []
        },
        {
          "isEligible": false,
          "transitionType": "transition_with_license_transfer",
          "errors": [
            {
              "code": 3,
              "description": "Subscription cannot be transitioned because there are conflicting services."
            }
          ]
        }
      ],
      "attributes": {
        "objectType": "TransitionEligibility"
      }
    },
    {
      "operationId": "1caf8ec7-62cc-4ab5-b35d-572d2a62974c",
      "catalogItemId": "CFQ7TTC0L4M3:0001:CFQ7TTC0K78T",
      "title": "Business Premium Test Sku Title",
      "description": "Business Premium Test Sku Description",
      "quantity": 1,
      "eligibilities": [
        {
          "isEligible": false,
          "transitionType": "transition_with_license_transfer",
          "errors": [
            {
              "code": 3,
              "description": "Subscription cannot be transitioned because there are conflicting services."
            }
          ]
        }
      ],
      "attributes": {
        "objectType": "TransitionEligibility"
      }
    }
  ],
  "attributes": {
    "objectType": "Collection"
  }
}

过渡后

发布给定客户和订阅的过渡请求。 返回其初始状态的转换。

先决条件

  • 合作伙伴中心身份验证中所述的凭据。 此方案支持使用独立应用和 App+User 凭据进行身份验证。

  • 客户 ID (customer-tenant-id)。 如果不知道客户的 ID,可以通过选择“客户”工作区,然后从客户列表中选择客户,然后选择“帐户”,在合作伙伴中心查找该 ID。 在客户的“帐户”页上,在“客户帐户信息”部分查找Microsoft ID Microsoft ID 与客户 ID (customer-tenant-id) 相同。

  • 初始订阅的订阅 ID。

GDAP 角色

至少需要以下 GDAP 角色之一:

  • 目录读取器或全局读取器(仅转换)
  • 目录编写器(使用许可证转移转换)

注意

虽然此 API 适用于旧版和 NCE,但 GDAP 仅适用于旧版。

REST 请求

请求语法

方法 请求 URI
POST {baseURL}/v1/customers/{customer-tenant-id}/subscriptions/{subscription-id}/transitions HTTP/1.1

URI 参数

使用以下查询参数执行转换。

名称 类型​​ 必需 说明
customer-tenant-id guid Y 对应于客户的租户的 GUID。
subscription-id guid Y 对应于初始订阅的 GUID。

请求标头

有关详细信息,请参阅合作伙伴中心 REST 标头

请求正文

下表描述了 请求正文中的转换 属性。

properties 类型 必需 说明
fromCatalogItemId string 要从中转换的目录项。
fromSubscriptionId string 要从中转换的订阅 ID。
toCatalogItemId string 要转换到的目录项。
toSubscriptionId string 要转换到的订阅 ID。
quantity integer 要转换的许可证数。
termDuration string 指定订阅的期限持续时间。
billingCycle string 指定订阅计费周期。
transitionType string 转换类型。 可能的值 - transition_onlytransition_with_license_transfer

请求示例

POST https://api.partnercenter.microsoft.com/v1/customers/{customerId}/subscriptions/{subscriptionId}/transitions HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
MS-RequestId: 18752a69-1aa1-4ef7-8f9d-eb3681b2d70a
MS-CorrelationId: 81b08ffe-4cf8-49cd-82db-5c2fb0a8e132
X-Locale: en-US

{
    "fromCatalogItemId": "CFQ7TTC0LF8Q:0001:CFQ7TTC0K39X",
    "fromSubscriptionId": "e487e8dc-421e-4275-cb42-3c1c8daccf70",
    "toCatalogItemId": "CFQ7TTC0LF8R:0001:CFQ7TTC0KCSV",
    "toSubscriptionId": "0af52192-4a2a-4364-d25b-c8ecab3a5697",
    "quantity": 2,
    "termDuration": "P1M",
    "billingCycle": "Monthly",
    "transitionType": "transition_only"
}

REST 响应

如果成功,此方法将 返回其初始状态为“转换 ”资源。

响应的成功和错误代码

每个响应都有一个 HTTP 状态代码,指示成功或失败以及更多的调试信息。 使用网络跟踪工具读取此代码、错误类型和其他参数。 有关完整列表,请参阅错误代码

响应示例

HTTP/1.1 200 OK
Content-Length: 138
Content-Type: application/json
MS-CorrelationId: 81b08ffe-4cf8-49cd-82db-5c2fb0a8e132
MS-RequestId: 18752a69-1aa1-4ef7-8f9d-eb3681b2d70a
Date: Fri, 26 Feb 2021 20:42:26 GMT

{
    "fromCatalogItemId": "CFQ7TTC0LF8Q:0001:CFQ7TTC0K39X",
    "fromSubscriptionId": "e487e8dc-421e-4275-cb42-3c1c8daccf70",
    "toCatalogItemId": "CFQ7TTC0LF8R:0001:CFQ7TTC0KCSV",
    "toSubscriptionId": "0af52192-4a2a-4364-d25b-c8ecab3a5697",
    "quantity": 2,
    "termDuration": "P1M",
    "billingCycle": "Monthly",
    "transitionType": "transition_only"
    "Events": [
        {
            "name": "Conversion",
            "status": "Started ",
            "timestamp": "2021-01-08T18:01:14.7488618Z",
            "attributes":
            {
                "objectType": "TransitionEvent"
            }
        }
    ],
    "attributes":
    {
        "objectType": "Transition" 
    }
}