Kundetabeller (konto, kontakt og kundeadresse)

Microsoft Dataverse kundetabeller (account, contactog customeraddress) lagrer kunderelasjoner, kontaktdetaljer og adresse- og leveringsinformasjon. Denne artikkelen forklarer hvordan disse tabellene relaterer seg og hvordan du administrerer innebygde og tomme kundeadresseposter.

Kontotabell

Kontotabellen er en av tabellene i Dataverse som de fleste andre tabeller er knyttet til eller overordnet. I Dataverse representerer en konto et firma som forretningsenheten har en relasjon til. Informasjon som er inkludert i en konto, er all relevant kontaktinformasjon, firmainformasjon, kategori, relasjonstype og adresseinformasjon. Annen informasjon som gjelder, omfatter følgende elementer:

  • En konto kan være en overordnet for de fleste tabelltyper, inkludert en annen konto.
  • En konto kan være en frittstående tabell.
  • En konto kan bare ha én konto som overordnet konto.
  • Forretningsforbindelser kan ha flere underordnede forretningsforbindelser og kontakter.

Kontoadministrasjon er et av de viktigste begrepene for bedrifts-til-bedrift kunderelasjonsadministrasjon (Dynamics 365) fordi en organisasjon ønsker å se alle aktivitetene de har med et annet selskap. Alle disse aktivitetene samles på kontonivå. Vis kontotabellreferansen.

Kontakttabell

I Dataverse representerer en kontakt en person, vanligvis en person, som en forretningsenhet har en relasjon med, for eksempel en kunde, en leverandør eller en kollega. Kontakttabellen er en av tabellene som de fleste andre tabeller er koblet til. En kontakt kan være en frittstående tabell. Inkludert i denne tabellen er profesjonelle, personlige opplysninger og familieinformasjon og flere adresser. Vis kontakt tabellreferansen.

Både kontoer og kontakter er en del av administrasjon av kunder og er relatert til hverandre på følgende måter:

  • En kontakt kan være en forelder for alle andre tabeller unntatt forretningsforbindelser og kontakter.
  • En kontakt kan bare ha én konto som overordnet.
  • En kontakt kan merkes som den primære kontaktpersonen for en konto ved å angi Account.PrimaryContactId kolonnen.

Kontakttabellen lagrer informasjon om en person, for eksempel en e-postadresse, gateadresse og telefonnumre. Den inneholder også annen relatert informasjon, for eksempel personens fødselsdag eller jubileumsdato. Avhengig av hvilken type kunder en forretningsenhet har, trenger den enten bare kontakter, eller kontakter og kontoer, for å gi full oversikt over kundene.

Ved å koble tabeller, for eksempel aktiviteter og notater til contact tabellen, kan brukeren se all kommunikasjonen brukeren hadde med en kunde, eventuelle handlinger brukeren gjorde på vegne av kunden, og all informasjon brukeren trenger om kunden.

Tabellen CustomerAddress

Denne tabellen inneholder mer adresse- og leveringsinformasjon for kundeoppføringer (konto og kontakt). Som standard oppretter Dataverse minst to customeraddress poster i denne tabellen når du oppretter en ny kundepost, selv når det ikke finnes data for disse postene. Lær hvordan du kan endre denne virkemåten.

Du kan få tilgang til alle customeraddress oppføringer relatert til forretningsforbindelses- og kontaktoppføringer gjennom Account_CustomerAddress og Contact_CustomerAddress relasjoner. Begge relasjonene bruker det overordnede ID-oppslaget . Kolonnen parentidtypecode angir hvilken type kundepost adressen er relatert til.

Adresseopplysninger integrert i kundeposter

Du kan hente eller endre dataene for de to eller tre innebygde customeraddress postene med kundeoppføringen.

  • Kontooppføringer har kolonner address1_addressid og address2_addressid.
  • Kontaktoppføringer har kolonner address1_addressid, address2_addressid og address3_addressid.

Disse kolonnene lagrer customeraddressid verdier. Andre kundekolonner, hver prefiks med address1*, address2*eller address3*, inneholder tilsvarende adresseinformasjon fra customeraddress tabellen.

Kolonnen customeraddressaddressnumber angir hvilken adresse som gjelder for kolonnene for overordnet kundepost. Du kan ikke angi addressnumber kolonnen til en verdi som brukes av en annen customeraddress post relatert til den samme overordnede kunden. Du kan angi en eksisterende addressnumber verdi til 0 eller null, og deretter endre verdien for en annen post hvis du vil bytte den relative posisjonen til postene for kundepostene. addressnumber Mens verdien øker for hver post som er opprettet for en kunde, annet enn å kontrollere den respektive innebygde adresseplasseringen i kundeposten (enten 1, 2eller 3), addressnumber brukes ikke kolonneverdien til noe annet formål.

Datavers oppdaterer bare disse customeraddress postene gjennom de tilsvarende kundepostkolonnene i stedet for å oppdatere customeraddress radene direkte. Alle kan imidlertid redigere disse oppføringene som customeraddress poster, eller legge til flere customeraddress poster som er knyttet til account eller contact posten som ikke er innebygd i forretningsforbindelses- og kontaktoppføringene.

Sletting av innebygde kundeadresserader er ikke tillatt

Hvis du som standard prøver å slette en av de innebygde customeraddress postene som address1_addressid, address2_addressideller address3_addressid referanser for en kundeoppføring, får du en feilmelding som følgende feilmelding:

Navn: CannotDeleteDueToAssociation
Kode: 0x80040227
Nummer: -2147220953
Melding: Customer Address can not be deleted because it is associated with another object. Address Id = 4f33c2e4-d5a3-4b03-b050-21984c0e4c15, AddressNumber=2, ParentId=4b757ff7-9c85-ee11-8179-000d3a9933c9, ObjectTypeCode=1

Finn ut hvordan du kan endre denne virkemåten

Deaktiver oppretting av tom post

Hver rad i customeraddress tabellen teller mot dataverskapasiteten du betaler for, så det kan være lurt å minimere denne kostnaden.

Du kan be dataverse om ikke å opprette tomme customeraddress tabellrader for hver kundepost ved å endre innstillingen for oppretting av deaktiver tom adressepost i administrasjonssenteret for Power Platform. Før du endrer denne virkemåten, bør du vurdere om du har eksisterende tilpassinger som avhenger av standard virkemåte. Finn ut mer om denne innstillingen.

Når denne innstillingen er aktivert, opprettes ingen nye tomme customeraddress tabellrader når nye kundeposter opprettes. Poster opprettes bare hvis den innkommende datalasten inneholder adressedata. Vanligvis inkluderer nyttelasten bare kolonner som har data. Hvis det ikke finnes data for kolonnene, inkluderes ikke kolonnene i nyttelasten, og verdiene er null når posten lagres. Hvis nyttelasten imidlertid inneholder adressekolonner med verdier satt til null, opprettes adressen med nullverdier. Hvis du fortsatt ser tomme poster som opprettes, kontrollerer du hvordan de opprettes, og om klientprogrammet sender kolonnedata med nullverdier.

Hvis innstillingen Deaktiver oppretting av tom adressepost er slått av, gjenopptas standardvirkemåten. Hvis du aktiverer denne innstillingen, slettes ingen eksisterende customeraddress tabellrader. Hvis du slår denne innstillingen på igjen etter at den ble slått av, opprettes ikke poster som ikke ble opprettet på nytt.

Finn ut om oppretting av tom adressepost er deaktivert

Disse eksempelfunksjonene viser hvordan du oppdager om innstillingen Deaktiver oppretting av tom adressepost er aktivert i miljøet.

Denne Test-IsEmptyAddressRecordCreationDisabled PowerShell-funksjonen bruker kommandoen Microsoft Power Platform CLIpac env list-settings til å kontrollere en verdi i Organization.OrgDbOrgSettings kolonnen.

function Test-IsEmptyAddressRecordCreationDisabled {

   $orgdborgsettings = pac env list-settings `
      --filter orgdborgsettings `
   | Where-Object { $_ -match '^orgdborgsettings\s+' } `
   | ForEach-Object { $_ -replace '^orgdborgsettings\s+', '' }

   $xml = [xml]$orgdborgsettings

   $element = $xml.SelectSingleNode("//CreateOnlyNonEmptyAddressRecordsForEligibleEntities")

   # Return true only when the element exists and has the value of 'true'
   return ($null -ne $element) -and ($element.InnerText -eq 'true')
}

Finn ut mer om Microsoft Power Platform CLI

Slett innebygde adresseoppføringer

Som standard kan du ikke slette innebygde customeraddress tabellrader som address1_addressidkolonnene address3_addressid i address2_addressidkundetabellene refererer til. Hvis du vil ha mer informasjon, kan du se Sletting av innebygde kundeadresserader er ikke tillatt.

Innstillingen Aktiver sletting av adresseposter i administrasjonssenteret for Power Platform endrer denne virkemåten. Finn ut mer om denne innstillingen.

Finn ut om sletting av adresseposter er aktivert

Disse eksempelfunksjonene viser hvordan du oppdager om innstillingen Aktiver sletting av adresseposter er aktivert i miljøet.

Denne Test-IsDeleteAddressRecordsEnabled PowerShell-funksjonen bruker kommandoen Microsoft Power Platform CLIpac env list-settings til å kontrollere en EnableDeleteAddressRecords verdi i Organization.OrgDbOrgSettings kolonnen.

function Test-IsDeleteAddressRecordsEnabled {

   $orgdborgsettings = pac env list-settings `
      --filter orgdborgsettings `
   | Where-Object { $_ -match '^orgdborgsettings\s+' } `
   | ForEach-Object { $_ -replace '^orgdborgsettings\s+', '' }

   $xml = [xml]$orgdborgsettings

   $element = $xml.SelectSingleNode("//EnableDeleteAddressRecords")

   # Return true only when the element exists and has the value of 'true'
   return ($null -ne $element) -and ($element.InnerText -eq 'true')
}

Finn ut mer om Microsoft Power Platform CLI

Massesletting av tomme kundeadresseposter

Når du deaktiverer oppretting av tomme adresseposter og aktiverer sletting av adresseposter, kan du bruke følgende eksempelfunksjoner til å slette tomme customeraddress poster ved hjelp BulkDelete av meldingen.

Eksempler på massesletting av kode

Disse funksjonene er basert på skrivbare kolonner/attributter for Adresse (CustomerAddress), og inneholder ingen egendefinerte kolonner som kan være i miljøet ditt. Du vil kanskje endre disse spørringene hvis du trenger å inkludere de egendefinerte kolonnene.

Start-BulkDeleteEmptyCustomerAddressRecords PowerShell-funksjonen oppretter en systemjobb for å slette tomme customeraddress poster ved hjelp av kommandoen Microsoft Power Platform CLIpac data bulk-delete schedule.

Denne funksjonen avhenger av eksemplet og funksjonene som er beskrevet i Finn ut om sletting av adresseposter er aktivert, og Finn ut om oppretting av tom adressepost er deaktivert.Test-IsEmptyAddressRecordCreationDisabledTest-IsDeleteAddressRecordsEnabled Funksjonen oppretter jobben bare når begge innstillingene tillater at alle tomme kundeadresseposter slettes og forhindrer at nye tomme poster opprettes.

function Start-BulkDeleteEmptyCustomerAddressRecords {

   if (!(Test-IsDeleteAddressRecordsEnabled)) {
      Write-Host 'Enable deletion of address records before running this function.'
      return
   }

   if (!(Test-IsEmptyAddressRecordCreationDisabled)) {
      Write-Host 'Disable empty address record creation before running this function.'
      return
   }

   $fetchXml = @(
      '<fetch>'
      "<entity name='customeraddress'>"
      "<attribute name='customeraddressid' />"
      "<filter type='and'>"
      "<condition attribute='city' operator='null' />"
      "<condition attribute='country' operator='null' />"
      "<condition attribute='county' operator='null' />"
      "<condition attribute='fax' operator='null' />"
      "<condition attribute='freighttermscode' operator='null' />"
      "<condition attribute='latitude' operator='null' />"
      "<condition attribute='line1' operator='null' />"
      "<condition attribute='line2' operator='null' />"
      "<condition attribute='line3' operator='null' />"
      "<condition attribute='longitude' operator='null' />"
      "<condition attribute='postalcode' operator='null' />"
      "<condition attribute='postofficebox' operator='null' />"
      "<condition attribute='primarycontactname' operator='null' />"
      "<condition attribute='shippingmethodcode' operator='null' />"
      "<condition attribute='stateorprovince' operator='null' />"
      "<condition attribute='telephone1' operator='null' />"
      "<condition attribute='telephone2' operator='null' />"
      "<condition attribute='telephone3' operator='null' />"
      "<condition attribute='upszone' operator='null' />"
      "<condition attribute='utcoffset' operator='null' />"
      '</filter>'
      '</entity>'
      '</fetch>'
   ) -join ''

   pac data bulk-delete schedule `
      --entity customeraddress `
      --fetchxml $fetchXml `
      --job-name 'Delete Empty Customer Address Records'
}