Quitar una relación de revendedor con un cliente

Se aplica a: Centro de partners | Centro de partners operado por 21Vianet | Centro de partners para Microsoft Cloud for US Government

Quite una relación de revendedor con un cliente con el que ya no tenga transacciones.

Requisitos previos

  • Credenciales tal como se describen en el artículo Autenticación del Centro de partners. Este escenario admite la autenticación solo con credenciales de aplicación y usuario.

  • Un id. de cliente (customer-tenant-id). Si no conoce el identificador del cliente, puede buscarlo en el Centro de partners. Seleccione el área de trabajo Clientes en la página principal del Centro de partners. Seleccione el cliente en la lista Customer (Cliente) y, a continuación, seleccione Account (Cuenta). En la página Cuenta del cliente, busque el identificador de Microsoft en la sección Detalles de la cuenta de cliente. El id. de Microsoft es el mismo que el de cliente (customer-tenant-id).

  • Todos los pedidos de instancia reservada de máquina virtual de Azure deben cancelarse antes de quitar una relación de revendedor. Llame a Soporte técnico de Azure para cancelar los pedidos abiertos de instancia reservada de máquina virtual de Azure.

C#

Para quitar la relación de revendedor de un cliente, asegúrese primero de que se cancele cualquier instancia de máquina virtual reservada de Azure activa para ese cliente. A continuación, asegúrese de que se suspenden todas las suscripciones activas para ese cliente. Para ello, determine el identificador del cliente para el que desea eliminar la relación de revendedor. En el ejemplo de código siguiente, se solicita al usuario que proporcione el identificador de cliente.

Para determinar si se debe cancelar alguna instancia reservada de máquina virtual de Azure para el cliente, recupere la colección de derechos mediante una llamada al método IAggregatePartner.Customers.ById mediante el identificador de cliente para especificar el cliente y la propiedad Entitlements para recuperar una interfaz a las operaciones de recopilación de derechos. Llame al método Get o GetAsync para recuperar la colección de derechos. Filtre la colección por los derechos con un valor EntitlementType de EntitlementType.VirtualMachineReservedInstance y, si hay alguno, cancelelos llamando al soporte técnico antes de continuar.

A continuación, recupere una colección de las suscripciones del cliente llamando al método IAggregatePartner.Customers.ById mediante el identificador de cliente para especificar el cliente y la propiedad Subscriptions para recuperar una interfaz para las operaciones de recopilación de suscripciones. Por último, llame al método Get o GetAsync para recuperar la colección de suscripciones del cliente. Recorra la colección de suscripciones y asegúrese de que ninguna de las suscripciones tenga un valor de propiedad Subscriptions.Status de SubscriptionStatus.Active. Si una suscripción sigue activa, consulte Suspender una suscripción para obtener información sobre cómo suspenderla.

Después de confirmar que todas las instancias activas de máquina virtual reservada de Azure para ese cliente se cancelan y se suspenden todas las suscripciones activas, puede quitar la relación de revendedor para el cliente. En primer lugar, cree un nuevo objeto Customer con la propiedad relationshiptopartner establecida en CustomerPartnerRelationship.None. A continuación, llame al método IAggregatePartner.Customers.ById mediante el identificador de cliente para especificar el cliente y llame al método Patch, pasando el nuevo objeto de cliente.

Para volver a establecer la relación, repita el proceso de solicitud de una relación de revendedor.

// IAggregatePartner partnerOperations;

// Prompt the user the enter the customer ID.
var customerIdToDeleteRelationshipOf = this.Context.ConsoleHelper.ReadNonEmptyString("Please enter the ID of the customer you want to delete the relationship with", "The customer ID can't be empty");

// Determine if there are any active Azure Reserved VM Instances for this customer.
ResourceCollection<Entitlement> entitlements = partnerOperations.Customers.ById(customerIdToDeleteRelationshipOf).Entitlements.Get();

If (entitlements.Items.Where(x => x.EntitlementType == EntitlementType.VirtualMachineReservedInstance).Any())
{
    this.Context.ConsoleHelper.Warning("Please cancel Azure Reserved Virtual Machine Instance orders through support and try again. Aborting the delete customer relationship operation");
               return;
}

// Verify that there are no active subscriptions.
ResourceCollection<Subscription> customerSubscriptions = partnerOperations.Customers.ById(customerIdToDeleteRelationshipOf).Subscriptions.Get();
IList<Subscription> subscriptions = new List<Subscription>(customerSubscriptions.Items);

foreach (Subscription customerSubscription in subscriptions)
{
    if (customerSubscription.Status == SubscriptionStatus.Active)
    {
        this.Context.ConsoleHelper.Warning(String.Format("Subscription with ID :{0}  OfferName: {1} cannot be in active state, ", customerSubscription.Id, customerSubscription.OfferName));
        this.Context.ConsoleHelper.Warning("Please Suspend all the Subscriptions and try again. Aborting the delete customer relationship operation");
               return;
    }
}

// Delete the customer's relationship to the partner.
Customer customer = new Customer();
customer.RelationshipToPartner = CustomerPartnerRelationship.None;
customer = partnerOperations.Customers.ById(customerIdToDeleteRelationshipOf).Patch(customer);

if (customer.RelationshipToPartner == CustomerPartnerRelationship.None)
{
    this.Context.ConsoleHelper.Success("Customer Partner Relationship successfully deleted");
}

Ejemplo: Aplicación de prueba de consola. Project: PartnerSDK.FeatureSample (Clase): DeletePartnerCustomerRelationship.cs

Solicitud REST

Sintaxis de la solicitud

Método URI de solicitud
PATCH {baseURL}/v1/customers/{customer-tenant-id}/ HTTP/1.1

Parámetro de URI

En esta tabla se enumeran los parámetros de consulta necesarios para quitar una relación de revendedor.

Nombre Type Obligatorio Descripción
customer-tenant-id guid Y El valor es un GUID con formato customer-tenant-id que identifica al cliente.

Encabezados de solicitud

Para obtener más información, consulta Encabezados REST del Centro de partners.

Cuerpo de la solicitud

Se requiere un recurso customer en el cuerpo de la solicitud. Asegúrese de que la propiedad RelationshipToPartner se ha establecido en none.

Ejemplo de solicitud

PATCH https://api.partnercenter.microsoft.com/v1/customers/<customer-tenant-id> HTTP/1.1
Authorization: Bearer <token>
Content-Length: 74
Content-Type: application/json; charset=utf-8
MS-CorrelationId: 9b4bf2ca-f374-4d51-9113-781ca87b8380
MS-RequestId: 9fef8b23-6e3e-45d2-8678-e9fe89c35af5
Date: Fri, 12 Jan 2018 00:31:55 GMT

{
    "relationshipToPartner":"none",
    "attributes":{
        "objectType":"Customer"
    }
}

Respuesta REST

Si se ejecuta correctamente, este método quita una relación de revendedor para el cliente especificado.

Códigos de error y de respuesta correctos

Cada respuesta incluye un código de estado HTTP que indica si la operación se ha realizado correctamente o con errores y proporciona información de depuración adicional. Use una herramienta de seguimiento de red para leer este código, el tipo de error y los parámetros adicionales. Para obtener la lista completa, consulta Códigos de error de REST del Centro de partners.

Ejemplo de respuesta

HTTP/1.1 200 OK
MS-RequestId: 7988dde4-b516-472c-b226-6d53fb18f04e
MS-CorrelationId: 9b4bf2ca-f374-4d51-9113-781ca87b8380
X-Locale: en-US
Content-Type: application/json
Content-Length: 242
Expect: 100-continue

{
    "Id":null,
    "CommerceId":null,
    "CompanyProfile":null,
    "BillingProfile":null,
    "RelationshipToPartner":"none",
    "AllowDelegatedAccess":null,
    "UserCredentials":null,
    "CustomDomains":null,
    "AssociatedPartnerId":null,
    "Attributes":{
        "ObjectType":"Customer"
    }
}