Rimuovere una relazione come rivenditore con un cliente

Si applica a: Centro per i partner | Centro per i partner gestito da 21Vianet | Centro per i partner per Microsoft Cloud per il governo degli Stati Uniti

Rimuovere una relazione rivenditore con un cliente con cui non sono più presenti transazioni.

Prerequisiti

  • Credenziali descritte in Autenticazione del Centro per i partner. Questo scenario supporta l'autenticazione solo con le credenziali app + utente.

  • ID cliente (customer-tenant-id). Se non si conosce l'ID del cliente, è possibile cercarlo nel Centro per i partner. Selezionare l'area di lavoro Clienti nella home page del Centro per i partner. Selezionare il cliente dall'elenco Clienti, quindi selezionare Account. Nella pagina Account del cliente cercare l'ID Microsoft nella sezione Dettagli account cliente. L'ID Microsoft corrisponde all'ID del cliente (customer-tenant-id).

  • Tutti gli ordini di Istanza di macchina virtuale riservata di Azure devono essere annullati prima che venga rimossa una relazione di rivenditore. Chiamare supporto tecnico di Azure per annullare qualsiasi ordine di istanza di macchina virtuale riservata di Azure aperta.

C#

Per rimuovere la relazione di rivenditore per un cliente, assicurarsi prima di tutto che tutte le istanze di macchina virtuale riservate di Azure attive per il cliente vengano annullate. Assicurarsi quindi che tutte le sottoscrizioni attive per il cliente siano sospese. A tale scopo, determinare l'ID del cliente per cui si vuole eliminare la relazione rivenditore. Nell'esempio di codice seguente viene richiesto all'utente di specificare l'identificatore del cliente.

Per determinare se è necessario annullare istanze di macchine virtuali riservate di Azure per il cliente, recuperare la raccolta di diritti chiamando il metodo IAggregatePartner.Customers.ById usando l'identificatore del cliente per specificare il cliente e la proprietà Entitlements per recuperare un'interfaccia per le operazioni di raccolta entitlement. Chiamare il metodo Get o GetAsync per recuperare la raccolta entitlement. Filtrare la raccolta per tutti i diritti con un valore EntitlementType entitlementType.VirtualMachineReservedInstance e, in caso affermativo, annullarli chiamando il supporto prima di procedere.

Recuperare quindi una raccolta delle sottoscrizioni del cliente chiamando il metodo IAggregatePartner.Customers.ById usando l'identificatore del cliente per specificare il cliente e la proprietà Subscriptions per recuperare un'interfaccia alle operazioni di raccolta delle sottoscrizioni. Chiamare infine il metodo Get o GetAsync per recuperare la raccolta delle sottoscrizioni del cliente. Attraversare la raccolta di sottoscrizioni e assicurarsi che nessuna delle sottoscrizioni abbia un valore della proprietà Subscriptions.Status di SubscriptionStatus.Active. Se una sottoscrizione è ancora attiva, vedere Sospendere una sottoscrizione per informazioni su come sospenderla.

Dopo aver confermato che tutte le istanze di macchina virtuale riservate di Azure attive per il cliente vengono annullate e tutte le sottoscrizioni attive vengono sospese, è possibile rimuovere la relazione rivenditore per il cliente. Creare prima di tutto un nuovo oggetto Customer con la proprietà relationshiptopartner impostata su CustomerPartnerRelationship.None. Chiamare quindi il metodo IAggregatePartner.Customers.ById usando l'identificatore del cliente per specificare il cliente e chiamare il metodo Patch , passando il nuovo oggetto cliente.

Per ristabilire la relazione, ripetere il processo di richiesta di una relazione rivenditore.

// 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");
}

Esempio: App di test della console. Progetto: Classe PartnerSDK.FeatureSample: DeletePartnerCustomerRelationship.cs

Richiesta REST

Sintassi della richiesta

metodo URI della richiesta
PATCH {baseURL}/v1/customers/{customer-tenant-id}/ HTTP/1.1

Parametro URI

Questa tabella elenca i parametri di query necessari per rimuovere una relazione reseller.

Nome Digita Obbligatorio Descrizione
customer-tenant-id guid Y Il valore è un GUID formattato customer-tenant-id che identifica il cliente.

Intestazioni delle richieste

Per altre informazioni, vedi Intestazioni REST del Centro per i partner.

Testo della richiesta

Nel corpo della richiesta è necessaria una risorsa customer . Verificare che la proprietà RelationshipToPartner sia stata impostata su nessuno.

Esempio di richiesta

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"
    }
}

Risposta REST

In caso di esito positivo, questo metodo rimuove una relazione di rivenditore per il cliente specificato.

Codici di errore e di esito della risposta

Ogni risposta viene fornita con un codice di stato HTTP che ne indica l'esito e con informazioni di debug aggiuntive. Usa uno strumento di traccia di rete per leggere il codice, il tipo di errore e parametri aggiuntivi. Per l'elenco completo, vedi Codici di errore REST del Centro per i partner.

Risposta di esempio

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"
    }
}