Live-synkronoinnin ongelmien vianmääritys
Tässä artikkelissa on vianetsintätietoja kaksoiskirjoituksen integroinnista talous- ja toimintosovellusten sekä Microsoft Dataversen välillä. Erityisesti se tarjoaa tietoja, joiden avulla voit korjata ongelmia suoralla synkronoinnilla.
Tärkeä
Jotkin tämän artikkelin osa-alueet saattavat edellyttää joko järjestelmänvalvojan roolia tai Azure Active Directory (Azure AD) -vuokralaisen järjestelmänvalvojan valtuuksia. Kussakin osassa selitetään, tarvitaanko tiettyä roolia tai tiettyjä tunnistetietoja.
Live-synkronointi näyttää virheen, kun rivi luodaan
Näyttöön saattaa tulla seuraava virhesanoma, kun luot rivin talous- ja toimintosovelluksessa:
[{\"virhe\":\{"koodi\":\"0x80072560\",\"viesti\":\"Käyttäjä ei ole organisaation jäsen.\"}}], Etäpalvelin palautti virheen: (403) Kielletty."}}.
Voit korjata ongelman noudattamalla Järjestelmän vaatimukset ja edellytykset-kohdan ohjeita. Näiden vaiheiden suorittaminen Dataversessä edellyttää, että sovelluksessa luoduilla kaksoiskirjoituskäyttäjillä on järjestelmänvalvojan rooli. Omistavan ryhmän oletusryhmällä on oltava myös järjestelmänvalvojan rooli.
Live-synkronointi näyttää virheen, kun taulukkotietoja yritetään tallentaa
Ongelman korjaamiseen tarvittava rooli: Järjestelmänvalvoja
Näyttöön saattaa tulla seuraava virhesanoma, kun yrität tallentaa taulukkotietoja talous- ja toimintosovelluksessa:
Tietokannan muutoksia ei voi tallentaa. Työn yksikkö ei voi vahvistaa tapahtumaa. Tietoja ei voi kirjoittaa yksikön mittayksiköiksi. UnitOfMeasureEntity-kohteeseen kirjoittaminen epäonnistui. Virheilmoitus: Ei voi synkronoida mittayksikön kanssa.
Voit korjata ongelman varmistamalla, että sekä talous- ja toimintosovelluksessa että Dataversessä on tarvittavat viitetiedot. Jos esimerkiksi asiakastietue kuuluu tiettyyn asiakasryhmään, varmista, että asiakasryhmätietue on olemassa Dataversessä.
Jos molemmissa sijainnissa on tietoja ja olet vahvistanut, että ongelma ei liity tietoihin, toimi seuraavasti.
- Avaa DualWriteProjectConfigurationEntity-yksikkö käyttämällä Excel-lisäosaa. Apuohjelman käyttöä varten on otettava käyttöön suunnittelutila talous- ja toimintosovellusten Excel-apuohjelmassa ja lisättävä DualWriteProjectConfigurationEntity laskentataulukkoon. Lisätietoja on kohdassa Yksikön tietojen näyttäminen ja päivittäminen Excelissä.
- Valitse ja poista tietueet, joissa on ongelmia kaksoiskirjoituksen yhdistämismäärityksessä ja projektissa. Jokaista kaksoiskirjoituksen yhdistämismääritystä kohden on kaksi tietuetta.
- Julkaise muutokset Excel-lisäosan avulla. Tämä vaihe on tärkeä, koska se poistaa tietueet yksiköstä ja sen pohjana olevista taulukoista.
Luku- tai kirjoitusoikeusvirheiden käsitteleminen talous- ja toimintosovelluksen tietojen luonnin yhteydessä
Näyttöön saattaa tulla virheellisestä pyynnöstä ilmoittava virhesanoma, kun luot tietoja talous- ja toimintosovelluksessa.
Ongelman korjaaminen edellyttää puuttuvan oikeuden käyttöön ottamista määrittämällä oikea käyttöoikeusrooli yhdistetyn Dynamics 365 Sales- tai Dynamics 365 Customer Service -liiketoimintayksikköjen ryhmälle.
Etsi talous- ja toimintosovelluksessa liiketoimintayksikkö, joka on yhdistetty tietojen integroinnin yhteysjoukkoon.
Kirjaudu ympäristöön asiakasvuorovaikutussovelluksessa, siirry kohtaan Asetus > Tietoturva ja etsi yhdistetyn liiketoimintayksikön ryhmä.
Avaa ryhmän sivu muokkaamista varten ja valitse sitten Hallitse rooleja.
Määritä Hallitse ryhmärooleja -valintaikkunassa rooli, jolla on luku-/kirjoitusoikeus asianomaisiin taulukkoihin ja valitse sitten OK.
Synkronointiongelmien korjaaminen äskettäin muuttuneessa Dataverse -ympäristössä
Ongelman korjaamiseen tarvittava rooli: Järjestelmänvalvoja
Näyttöön saattaa tulla seuraava virhesanoma, kun luot tietoja talous- ja toimintosovelluksessa:
{"entityName":"CustCustomerV3Entity","executionStatus":2,"fieldResponses":[],"recordResponses":[{"errorMessage":"Hyötykuormaa ei voida luoda yksikölle CustCustomerV3Entity","logDateTime":"2019-08-27T18:51:52.5843124Z","verboseError":"Hyötykuorman luonti epäonnistui, väärä URI: URI on tyhjä."}],"isErrorCountUpdated":true}
Virhesanoma näyttää tältä asiakasvuorovaikutussovelluksessa:
Odottamaton virhe ISV-koodista. (ErrorType = ClientError) Odottamaton poikkeus laajennuksesta (Suorita): Microsoft.Dynamics.Integrator.DualWriteRuntime.Plugins.PostCommitPlugin: yksikön tilin käsittely epäonnistui - (yhteysyritys epäonnistui, koska yhdistetty osapuoli ei vastannut oikein tietyn ajanjakson jälkeen tai muodostettu yhteys epäonnistui, koska liitetty isäntä ei vastannut.
Tämä virhe ilmenee, jos Dataverse-ympäristö palautetaan virheellisesti, kun yrität luoda tietoja talous- ja toimintosovelluksessa.
Tärkeä
Jos olet linkittänyt ympäristöt uudelleen, sinun on pysäytettävä kaikki yksikköjen yhdistämismääritykset, ennen kuin voit jatkaa korjaustoimia.
Ongelman korjaamiseksi sinun on suoritettava toimenpiteitä sekä Dataversessä että talous- ja toimintosovelluksessa.
Toimi talous- ja toimintosovelluksessa seuraavasti:
- Avaa DualWriteProjectConfigurationEntity-yksikkö käyttämällä Excel-lisäosaa. Apuohjelman käyttöä varten on otettava käyttöön suunnittelutila talous- ja toimintosovellusten Excel-apuohjelmassa ja lisättävä DualWriteProjectConfigurationEntity laskentataulukkoon. Lisätietoja on kohdassa Yksikön tietojen näyttäminen ja päivittäminen Excelissä.
- Valitse ja poista tietueet, joissa on ongelmia kaksoiskirjoituksen yhdistämismäärityksessä ja projektissa. Jokaista kaksoiskirjoituksen yhdistämismääritystä kohden on kaksi tietuetta.
- Julkaise muutokset Excel-lisäosan avulla. Tämä vaihe on tärkeä, koska se poistaa tietueet yksiköstä ja sen pohjana olevista taulukoista.
- Jos haluat estää virheet, kun linkität talous- ja toimintosovellusten tai Dataversen ympäristöjä uudelleen, varmista, että kaksoiskirjoituksen määrityksiä ei ole jäljellä.
Noudata Dataversessä näitä ohjeita:
- Kirjaudu Dataverse-ympäristöysi (esim.
https://*****.crm.dynamics.com/
). - Siirry kohtaan Lisäasetukset>Erikoishaku.
- Valitse DualWriten suorituksenaikainen määritys.
- Valitse tarkasteltava sarake.
- Tarkastele määrityksiä valitsemalla Tulokset.
- Poista kaikki esiintymät.
- Kirjaudu Dataverse-ympäristöysi (esim.
Toimi talous- ja toimintosovelluksessa seuraavasti:
- Avaa DualWriteProjectConfigurationEntity-yksikkö käyttämällä Excel-lisäosaa. Apuohjelman käyttöä varten on otettava käyttöön suunnittelutila talous- ja toimintosovellusten Excel-apuohjelmassa ja lisättävä DualWriteProjectConfigurationEntity laskentataulukkoon. Lisätietoja on kohdassa Yksikön tietojen näyttäminen ja päivittäminen Excelissä.
- Valitse ja poista tietueet, joissa on ongelmia kaksoiskirjoituksen yhdistämismäärityksessä ja projektissa. Jokaista kaksoiskirjoituksen yhdistämismääritystä kohden on kaksi tietuetta.
- Julkaise muutokset Excel-lisäosan avulla. Tämä vaihe on tärkeä, koska se poistaa tietueet yksiköstä ja sen pohjana olevista taulukoista.
- Jos haluat estää virheet, kun linkität talous- ja toimintosovellusten tai Dataversen ympäristöjä uudelleen, varmista, että kaksoiskirjoituksen määrityksiä ei ole jäljellä.
Live-synkronoinnin virhe, kun koko tietokanta on kopioitu
Näyttöön saattaa tulla seuraava virhesanoma, kun teet koko tietokannasta kopion yhdestä järjestelmästä toiseen ja yrität sitten suorittaa tietokantatoiminnon:
SecureConfig-organisaatio (???) ei vastaa nykyistä CRM-organisaatiota (???).
Virhesanoma näytetään kaksoiskirjoituksen suorituspalvelulisäosasta sen varmistamiseksi, että yhdessä järjestelmässä määritettyä kaksoiskirjoitusmääritystä ei voi käyttää toisessa järjestelmässä.
Voit korjata ongelman poistamalla kaikki tietueet msdyn_dualwriteruntimeconfig-taulukosta, kun olet palauttanut tietokannan. Lisätietoja: Kaksoiskirjoitusympäristöjen linkityksen poisto ja uudelleenlinkitys.
Live-synkronoinnin ongelmat, jotka johtuvat virheellisestä kyselysuodattimen syntaksista kaksoiskirjoituksen yhdistämismäärityksissä
Vaikka kaksoiskirjoituksen yhdistämismäärityksen suodattimen kyselylausekkeen syntaksi olisi virheetön, se ei välttämättä toimi odotetulla tavalla. Suodattimen lauseke kohdistuu yksikköön eikä yksittäiseen kyselykohteen tietolähteeseen. Siten luotu SQL-kysely ei palauta odotettuja tuloksia.
Esimerkki:
Query entity = PROJECTENTITY
Query expression = (ParentProject == "")
Odotuksena voi olla, että projektit, joilla ei ole pääprojektia, suodatetaan pois. Suodatin ei kuitenkaan toimi, koska se on käännetty kyselyksi, joka muistuttaa seuraavaa esimerkkiä.
SELECT T1.RECID,T1.MODIFIEDDATETIME,T1.RECVERSION,T1.RECID,T1.DIMENSION,
T1.LOCATION,T1.PROJECTCONTROLLER,T1.PROJECTID,T1.PROJECTMANAGER,T1.REFERENCE,
T1.SALESMANAGER,T1.SCHEDULED,T1.RECVERSION#8,T1.RECVERSION#7,
T1.RECVERSION#6,T1.RECVERSION#5,T1.RECVERSION#4,T1.RECVERSION#3,
T1.RECVERSION#2,T1.RECID#8,T1.RECID#7,T1.RECID#6,T1.RECID#5,
T1.RECID#4,T1.RECID#3,T1.RECID#2,T1.PARTITION FROM PROJECTENTITY T1
WHERE(((((((((((PARTITION=5637144576) AND (DATAAREAID=N'usmf')) AND
((PARTITION#2=5637144576) OR (PARTITION#2 IS NULL))) AND
((PARTITION#3=5637144576) OR (PARTITION#3 IS NULL))) AND
((PARTITION#4=5637144576) OR (PARTITION#4 IS NULL))) AND
((PARTITION#5=5637144576) OR (PARTITION#5 IS NULL))) AND
((PARTITION#6=5637144576) OR (PARTITION#6 IS NULL))) AND
((PARTITION#7=5637144576) OR (PARTITION#7 IS NULL))) AND
((PARTITION#8=5637144576) OR (PARTITION#8 IS NULL))) AND
((DATAAREAID#8=N'usmf') OR (DATAAREAID#8 IS NULL))) AND
(PARENTPROJECT=''))
ORDER BY T1.PROJECTID
Todellinen tulos on, että parentProject
-kentän arvoksi arvioidaan null
. null
ei kuitenkaan ole sama asia kuin tyhjä merkkijono. Tämän ristiriidan vuoksi kyselysuodatin ei palauta kelvollisia tuloksia.
Korjaa ongelma seuraavien ohjeiden mukaisesti.
Lisää laskettu sarake, joka voidaan lisätä laajennusmalliin ja jota tukee arvon
null
tyhjäksi merkkijonoksi muuntava logiikka.SysComputedColumn::if(SysComputedColumn::isNullExpression(ParentProject), SysComputedColumn::returnLiteral(""), fieldName);
Käytä uuden lasketun sarakkeen suodatinta oletussarakkeen sijaan.
Voit arvioida suodatinta kehitysympäristössä käyttämällä seuraavaa X++-koodia tulosten vahvistamiseksi. Suorita tämä koodi erillisenä ohjelmana. Sen avulla voit arvioida erilaisia suodattimia, joita voi käyttää yksikköön, ennen kuin käytät niitä kaksoiskirjoituksen yhdistämismäärityksiin. Kysely voidaan kohdistaa tietokantaan eroavaisuuksien arvioimista varten.
var entityName = "PROJECTENTITY";
var filterExpression = '(ParentProject == "")';
Query query = new Query();
query.literals(NoYes::Yes);
QueryBuildDataSource qbd = query.addDataSource(tablename2id(entityName));
qbd.addRange(fieldname2id(qbd.table(),identifierStr(RecVersion))).value(filterExpression);
qbd.addSelectionField(fieldname2id(qbd.table(),identifierStr(RecId)));
QueryRun qRun = new QueryRun(query);
// This provides the actual sql statement to execute
var actualSqlStatement = query.getSQLStatement();
while(qRun.next())
{
var rec = qRun.get(tableName2Id(entityName));
}
Talous- ja toimintosovellusten tietoja ei synkronoida Dataversen kanssa
Live-synkronoinnin aikana saattaa ilmetä ongelma, jossa vain osa tiedoista synkronoidaan talous- ja toimintosovelluksista Dataverseen tai tietoja ei synkronoida lainkaan.
Muistiinpano
Tämä ongelma on korjattava kehityksen aikana.
Tarkista seuraavat edellytykset ennen ongelman korjaamisen aloittamista:
- Varmista, että mukautetut muutokset on kirjoitettu yhteen tapahtuma-alueeseen.
- Liiketoimintatapahtumat ja kaksoiskirjoituskehys eivät käsittele toimintoja
doinsert()
,doUpdate()
tairecordset()
eivätkä tietueita, joissaskipBusinessEvents(true)
on merkittynä. Jos koodi on näiden toimintojen sisällä, kaksoiskirjoitusta ei käynnistetä. - Liiketoimintatapahtumat on rekisteröitävä yhdistettyä tietolähdettä varten. Joissakin tietolähteissä käytetään ulkoliitosta, ja ne voivat olla merkittynä vain luettaviksi talous- ja toimintosovelluksissa. Näitä tietolähteitä ei seurata.
- Muutokset tehdään vain, jos muutokset on tehty yhdistettyihin kenttiin. Muutokset muihin kuin yhdistettyihin kenttiin eivät käynnistä kaksoiskirjoitusta.
- Varmista, että suodatinarvioinnit tuottavat kelvollisen tuloksen.
Vianmääritysvaiheet
Tarkista kenttien yhdistämismääritykset kaksoiskirjoituksen järjestelmänvalvojan sivulta. Jos kenttää ei ole yhdistetty talous- ja toimintosovelluksista Dataverseen, sitä ei seurata. Seuraavassa kuvassa Kuvaus-kenttää seurataan Dataversessä, mutta ei talous- ja toimintosovelluksissa. Tähän kenttään talous- ja toimintosovelluksissa tehtäviä muutoksia ei seurata.
Määritä, seurataanko tietolähdettä liiketoimintatapahtuman määritelmässä. Seuraavassa kuvassa esimerkiksi mitään DefaultDimensionDAVs-taulukon tai sen alitaulukon kenttien muutoksia ei seurata. Tietolähteitä, jotka käyttävät ulkoliitosta ja jotka on merkitty vain luetuksi, ei seurata.
Selvitä, näkyvätkö yhdistetyt taulukkokentät BUSINESSEVENTSDEFINITION-taulukossa seuraavassa kuvassa näkyvällä tavalla. Jos et löydä haettavaa kenttää kyselyn tuloksesta, se ei käynnistä kaksoiskirjoitusta.
Esimerkkiskenaario
Talous- ja toimintosovelluksissa on päivitetty yhteyshenkilötietueen osoitetta, mutta muutos ei synkronoidu Dataverseen. Tämä tapahtuu, koska missään BusinessEventsDefinition-taulukon tietueessa ei ole kulloisenkin taulukon ja yksikön yhdistelmää. Tarkemmin ottaen LogisticsPostalAddress-taulukko ei ole smmContactpersonCDSV-yksikön suora tietolähde. smmContactpersonCDSV2Entity-yksikön tietolähteenä on smmContactPersonV2Entity ja smmContactPersonV2Entity-yksiköllä vuorostaan tietolähteenä on LogisticsPostalAddressBaseEntity. LogisticsPostalAddress-taulukko on LogisticsPostalAddressBaseEntity-yksikön tietolähde.
Sama voi toistua erikoistilanteissa, kuten silloin, kun talous- ja toimintosovelluksissa muokattavaa taulukkoa ei ole selkeästi linkitetty yksikköön, joka sisältää sen. Esimerkiksi ensisijaiset osoitetiedot voidaan laskea smmContactPersonCDSV2Entity-yksikössä. Kaksoiskirjoituskehys yrittää määrittää, miten alitaulukon muutos yhdistetään takaisin yksikköihin. Yleensä tämä menetelmä riittää. Joissakin tapauksissa linkki on kuitenkin niin monimutkainen, että sen kanssa on oltava tarkka. Sinun on varmistettava, että asiaan liittyvän taulukon RecId on saatavilla suoraan yksikössä. Lisää sitten staattinen menetelmä taulukon seuraamiseksi muutosten osalta.
Esimerkkinä tästä on tarkista smmContactPersonCDSV2Entity::getEntityDataSourceToFieldMapping() -menetelmä. CustCustomerV3entity ja VendVendorV2Entity on mukautettu tämän tilanteen käsittelemiseksi.
Korjaa ongelma seuraavien ohjeiden mukaisesti.
Lisää PrimaryPostalAddressRecId-kenttä smmContactPersonV2Entity-yksikköön. Tee siitä sisäinen.
Lisää sama kenttä smmContactPersonCDSV2Entity-yksikköön.
Lisää seuraava menetelmä smmContactPersonCDSV2Entity-luokkaan.
public static container getEntityDataSourceToFieldMapping(container mapping) { mapping += [[tablestr(smmContactPersonCDSV2Entity), tablenum(LogisticsPostalAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryPostalAddressRecId)]]; return mapping; }
Synkronoi tietokanta ja luo sovellus.
Keskeytä kaikki kaksoiskirjoituksen yhdistämismääritykset, jotka luodaan smmContactPersonCDSV2Entity-yksikköön.
Käynnistä yhdistämismääritys. Näkyviin pitäisi tulla uusi taulukko (LogisticsPostalAddress tässä esimerkissä), jonka seurannan olet aloittanut käyttämällä RefTableName-saraketta riville, jossa refentityname-arvo on sama kuin smmContactPersonCDSV2EntityBusinessEventsDefinition-taulukossa.
Virhe luotaessa tietuetta, jossa useita tietueita lähetetään talous- ja toimintosovelluksesta Dataverseen samassa erässä
Talous- ja toimintosovellus luo tietoerän mitä tahansa tapahtumaa varten ja lähettää sen eränä Dataverseen. Jos kaksi tietuetta luodaan osana samaa tapahtumaa ja ne viittaavat toisiinsa, tuloksena voi olla virhesanoma, joka muistuttaa seuraavaa esimerkkiä talous- ja toimintosovelluksessa:
Tietoja ei voi kirjoittaa yksikköön aaa_fundingsources. Kohteesta ebecsfs_contracts ei voi etsiä arvoja {PC00...}. Kohteesta aaa_fundingsources ei voi etsiä arvoja {PC00...}. Kirjoittaminen kohteeseen aaa_fundingsources epäonnistui, kun näyttöön tulee poikkeusanoma: Etäpalvelin palautti virheen (400) Virheellinen pyyntö.
Voit korjata ongelman luomalla yksikkösuhteita talous- ja toimintosovelluksessa ilmaisemaan, että kaksi yksikköä liittyvät toisiinsa ja että toisiinsa liittyvät tietueet käsitellään samassa tapahtumassa.
Virhesanomien sanallisen kirjaamisen käyttöönotto
Talous- ja toimintosovelluksessa saattaa ilmetä virheitä, jotka liittyvät Dataverse-ympäristöön. Virhesanoma ei välttämättä sisällä sanoman koko tekstiä tai kaikkia muita merkityksellisiä tietoja. Lisätietoja saa ottamalla sanallisen kirjaamisen käyttöön määrittämällä DualWriteProjectConfigurationEntity-yksikössä kaikissa talous- ja toimintosovellusten projektimäärityksissä olevan IsDebugMode-merkinnän.
- Avaa DualWriteProjectConfigurationEntity-yksikkö käyttämällä Excel-lisäosaa. Apuohjelman käyttöä varten on otettava käyttöön suunnittelutila talous- ja toimintosovellusten Excel-apuohjelmassa ja lisättävä DualWriteProjectConfigurationEntity laskentataulukkoon. Lisätietoja on kohdassa Yksikön tietojen näyttäminen ja päivittäminen Excelissä.
- Määritä IsDebugMode-merkinnän arvoksi Kyllä projektissa.
- Suorita skenaario.
- Sanalliset lokit ovat käytettävissä DualWriteErrorLog-taulussa. Voit etsiä tietoja taulukkoselaimella käyttäen seuraavaa URL-osoitetta:
https://XXXaos.cloudax.dynamics.com/?mi=SysTableBrowser&tableName=DualWriteErrorLog
- Jos haluat tallentaa enemmän lokeja virheenkorjaustilassa, asenna päivitys osoitteessa KB 4595434 (korjaus tyhjien arvojen täyttämiseen kaksoiskirjoituksen live-synkronoinnissa).
Virhe lisättäessä asiakkaan tai yhteyshenkilön osoitetta
Saatat saada seuraavan virhesanoman, kun yrität lisätä asiakkaan tai yhteyshenkilön osoitetta talous- ja toimintosovelluksissa tai Dataversessä:
Yksikön msdyn_partypostaladdresses tietoja ei voi kirjoittaa. Kohteeseen DirPartyPostalAddressLocationCDSEntity kirjoittaminen epäonnistui virheilmoituksella: Pyyntö epäonnistui tilakoodilla BadRequest ja CDS-virhekoodilla: 0x80040265 vastaussanoma: Laajennuksessa tapahtui virhe. Tietue, jolla on määritteen arvojen Sijaintitunnus, on jo olemassa. Yksikön avaimen Sijaintitunnus-avain edellyttää, että tämä määritteiden joukko sisältää yksilöivät arvot. Valitse yksilölliset arvot ja yritä uudelleen.
Voit korjata tämä ongelman asentamalla kaksoiskirjoituksen orkestrointipaketin version (2.2.2.60), jotta Osoite-taulukon avaimet on määritetty seuraavassa taulukossa näkyvällä tavalla.
Ominaisuus | Arvo |
---|---|
Näyttönimi | Sijaintiavain |
Nimi | msdyn_locationkey |
Kentät | msdyn_locationid, parentid |
Tila | Käytössä |
Järjestelmätyö | Tyhjä |
Virhe lisättäessä asiakasta Dataversessä
Näyttöön saattaa tulla seuraava virhesanoma, kun yrität lisätä asiakkaan Dataversessä:
"RecordError0":"Kirjoitus yksikössä Customers V3 epäonnistui tuntemattomalla poikkeuksella – Osapuolitietuetta ei löytynyt osapuolityypille 'Organisaatio'"}.
Kun asiakas luodaan Dataversessä, uusi osapuolinumero luodaan. Virhesanoma tulee näkyviin, kun asiakastietua synkronoidaan yhdessä osapuolen kanssa talous- ja toimintosovelluksiin, mutta olemassa on jo asiakastietue, jolla on eri osapuolinumero.
Voit korjata ongelman hakemalla asiakkaan osapuolihaulla. Jos asiakasta ei ole olemassa, luo uusi asiakastietue. Jos asiakas on olemassa, käytä olemassa olevaa osapuolta uuden asiakastietueen luomiseen.
Virhe luotaessa uutta asiakasta, toimittajaa tai yhteyshenkilöä Dataversessä
Saatat saada seuraavan virhesanoman, kun yrität luoda uuden asiakkaan, toimittajan tai yhteyshenkilön Dataversessä:
Osapuolen tyyppiä ei voi päivittää arvosta 'DirOrganization' arvoksi 'DirPerson', sen sijaan olemassa oleva osapuoli on poistettava ja uusi tyyppi on lisättävä.
Dataversen msdyn_party-taulukossa on numerosarja. Kun Dataversessä luodaan tili, luodaan uusi osapuoli (esimerkiksi Organisaatio-tyyppiä oleva Osapuoli-001). Nämä tiedot lähetetään talous- ja toimintosovellukseen. Jos Dataverse-ympäristö palautetaan tai talous- ja toimintosovellusympäristö linkitetään eri Dataverse-ympäristöön ja uusi yhteyshenkilötietue luodaan Dataversessä, luodaan uusi osapuoliarvo, joka alkaa Osapuoli-001. Tällä kertaa luodaan Henkilö-tyyppiä oleva Osapuoli-001-osapuolitietue. Kun nämä tiedot on synkronoitu, edellinen virhesanoma näkyy talous- ja toimintosovelluksissa, koska tyyppiä Organisaatio oleva Osapuoli-001-osapuolitietue on jo olemassa.
Voit korjata tämän ongelman muuttamalla Dataversen msdyn_party-taulukon msdyn_partynumber-kentän automaattisen numerosarjan eri automaattiseksi numerosarjaksi.
Suorituskykyongelma asiakkaiden tai yhteyshenkilöiden yhdistämismäärityksessä
Asiakkaiden ja yhteyshenkilöiden live-synkronointia voi olla mahdollista tehostaa hieman mukauttamalla getEntityDataSourceToFieldMapping-menetelmää (CustCustomerV3Entity-yksikössä) ja getEntityDataSourceToFieldMapping-menetelmää (yksikössä smmContactPersonCDSV2Entity). Nämä mukautukset vähentävät BusinessEventsDefinition-taulukon tietuemäärää. Tämä tietuemäärän vähennys vuorostaan vähentää ilmenevien tapahtumien määrää.
getEntityDataSourceToFieldMapping -menetelmä CustCustomerV3Entity-yksikössä varmistaa, että asiakkaan sähköposti- tai postiosoitteen muutos käynnistää liiketoimintatapahtumia, jotta päivitetyt tiedot lähetetään Dataverseen. Jos et käytä kaikkia kenttiä eikä tietoja tarvitse kaksoiskirjoittaa, poista asianomaiset rivit käytöstä menetelmässä. Jokainen tähän menetelmään lisätty seurattu kenttä ja taulukko lisää tietueen BusinessEventsDefinition-taulukkoa varten seuratun taulukon ja seuratun yksikön yhdistämistä varten.
public static container getEntityDataSourceToFieldMapping(container mapping)
{
mapping += [
[tablestr(DirPartyBaseEntity), tablenum(LogisticsPostalAddress), fieldstr(CustCustomerV3Entity, AddressRecordId)],
[identifierstr(DirPartyBaseEntity), tablenum(LogisticsElectronicAddress), fieldstr(CustCustomerV3Entity, PrimaryContactURLRecordId)],
[identifierstr(DirPartyBaseEntity1), tablenum(LogisticsElectronicAddress), fieldstr(CustCustomerV3Entity, PrimaryContactPhoneRecordId)],
[identifierstr(DirPartyBaseEntity2), tablenum(LogisticsElectronicAddress), fieldstr(CustCustomerV3Entity, PrimaryContactEmailRecordId)],
[identifierstr(DirPartyBaseEntity3), tablenum(LogisticsElectronicAddress), fieldstr(CustCustomerV3Entity, PrimaryContactFaxRecordId)],
[identifierstr(DirPartyBaseEntity4), tablenum(DirPartyLocation), fieldstr(CustCustomerV3Entity, DirPartyLocationRecordId)],
[identifierstr(DirPartyBaseEntity5), tablenum(LogisticsPostalAddress), fieldstr(CustCustomerV3Entity, InvoiceAddressRecordId)],
[identifierstr(DirPartyBaseEntity6), tablenum(LogisticsPostalAddress), fieldstr(CustCustomerV3Entity, DeliveryAddressRecordId)],
[identifierStr(DirPartyBaseEntity7), tablenum(DirPartyTable), fieldstr(CustCustomerV3Entity, PartyRecordId)]];
return mapping;
}
Samalla tavalla getEntityDataSourceToFieldMapping -menetelmä smmContactPersonCDSV2Entity-yksikössä varmistaa, että yhteyshenkilön sähköposti- tai postiosoitteen muutos käynnistää liiketoimintatapahtumia, jotta päivitetyt tiedot lähetetään Dataverseen. Menetelmässä voit poistaa käytöstä niiden kenttien rivit, joita et käytä.
public static container getEntityDataSourceToFieldMapping(container mapping)
{
mapping += [
[tablestr(DirPartyBaseEntity), tablenum(LogisticsPostalAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryPostalAddressRecId)],
[identifierStr(DirPartyBaseEntity), tablenum(DirPartyTable), fieldstr(smmContactPersonCDSV2Entity, PrimaryAddressLocation)],
[identifierStr(DirPartyBaseEntity1), tablenum(LogisticsElectronicAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryContactEmailRecordId)],
[identifierStr(DirPartyBaseEntity2), tablenum(LogisticsElectronicAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryContactFaxRecordId)],
[identifierStr(DirPartyBaseEntity3), tablenum(LogisticsElectronicAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryContactPhoneRecordId)],
[identifierStr(DirPartyBaseEntity4), tablenum(LogisticsElectronicAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryContactFacebookRecordId)],
[identifierStr(DirPartyBaseEntity5), tablenum(LogisticsElectronicAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryContactTwitterRecordId)],
[identifierStr(DirPartyBaseEntity6), tablenum(LogisticsElectronicAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryContactURLRecordId)],
[identifierStr(DirPartyBaseEntity7), tablenum(LogisticsElectronicAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryContactLinkedInRecordId)],
[identifierStr(DirPartyBaseEntity8), tablenum(LogisticsElectronicAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryContactTelexRecordId)],
[identifierStr(DirPartyBaseEntity9), tablenum(DirPartyTable), fieldstr(smmContactPersonCDSV2Entity, PartyRecordId)]];
return mapping;
}
Kun olet päivittänyt menetelmät, noudata seuraavia ohjeita.
- Synkronoi tietokanta ja luo sovellus.
- Keskeytä kaikki kaksoiskirjoituksen yhdistämismääritykset, jotka yksikköihin smmContactPersonCDSV2Entity ja CustCustomerV3Entity.
- Käynnistä yhdistämismääritys. Nyt yksiköissä smmContactPersonCDSV2Entity ja CustCustomerV3Entity sekä taulukossa BusinessEventsDefinition pitäisi olla vähemmän tietueita ja suorituskyky saattaa parantua hieman.