Problemen met live synchronisatie oplossen
Dit artikel bevat informatie voor het oplossen van problemen met de integratie van Twee keer wegschrijven tussen apps voor financiën en bedrijfsactiviteiten en Microsoft Dataverse. Dit onderwerp bevat specifieke informatie over het oplossen van problemen met live synchronisatie.
Belangrijk
Bij sommige problemen die in dit artikel worden beschreven, is mogelijk de rol van systeembeheerder vereist of de inloggegevens van de tenantbeheerder van de Microsoft Azure Active Directory (Azure AD). In elk gedeelte wordt uitgelegd of een specifieke rol of specifieke inloggegevens vereist zijn.
Bij live synchronisatie wordt een fout weergegeven wanneer u een rij aanmaakt
Mogelijk wordt het volgende foutbericht weergegeven wanneer u een rij in een app voor financiën en bedrijfsactiviteiten maakt:
[{\"error\":{\"code\":\"0x80072560\",\"message\":\"De gebruiker is geen lid van de organisatie.\"}}], De externe server heeft een fout geretourneerd: (403) verboden."}}".
Volg de stappen in Systeemvereisten en vereisten vooraf om het probleem op te lossen. Om deze stappen te voltooien, moeten gebruikers van de toepassing voor twee keer wegschrijven die in Dataverse zijn aangemaakt, beschikken over de rol systeembeheerder. Het standaardteam van eigenaar moet ook de rol systeembeheerder hebben.
Bij live synchronisatie wordt een fout weergegeven wanneer u tabelgegevens probeert op te slaan
Vereiste rol om de fout op te lossen: systeembeheerder
Mogelijk wordt het volgende foutbericht weergegeven wanneer u probeert tabelgegevens op te slaan in een app voor financiën en bedrijfsactiviteiten:
Kan de wijzigingen niet opslaan in de database. De transactie kan niet worden doorgevoerd met de werkeenheid. Kan gegevens niet naar maateenheden van entiteit schrijven. Schrijven naar UnitOfMeasureEntity is mislukt met foutbericht Kan niet synchroniseren met maateenheden van entiteit.
Om het probleem op te lossen moet u ervoor zorgen dat de vereiste verwijzingsgegevens aanwezig zijn in de app voor financiën en bedrijfsactiviteiten en Dataverse. Als een klantrecord bijvoorbeeld deel uitmaakt van een specifieke klantengroep, zorg er dan voor dat het record van de klantengroep bestaat in Dataverse.
Voer de volgende stappen uit als er op beide plekken gegevens voorkomen en is bevestigd dat het probleem niet samenhangt met gegevens.
- Open de entiteit DualWriteProjectConfigurationEntity met de Excel-invoegtoepassing. Als u de invoegtoepassing wilt gebruiken, moet u de ontwerpmodus in de Excel-invoegtoepassing voor financiën en bedrijfsactiviteiten inschakelen en DualWriteProjectConfigurationEntity aan een werkblad toevoegen. Zie Entiteitsgegevens weergeven en bijwerken met Excel voor meer informatie.
- Selecteer en verwijder de records waarmee problemen zijn in de toewijzing voor twee keer wegschrijven en het project. Er zullen twee records bestaan voor elke toewijzing voor twee keer wegschrijven.
- Publiceer de wijzigingen met de Excel-invoegtoepassing. Deze stap is belangrijk omdat hiermee de records uit de entiteit en onderliggende tabellen worden verwijderd.
Fouten met lees- of schrijfbevoegdheid oplossen wanneer u gegevens maakt in een app voor financiën en bedrijfsactiviteiten
Mogelijk wordt het foutbericht 'Ongeldige aanvraag' weergegeven wanneer u gegevens in een app voor financiën en bedrijfsactiviteiten aanmaakt.
Dit probleem is op te lossen door de juiste beveiligingsrol toe te wijzen aan het team van de toegewezen Dynamics 365 Sales- of Dynamics 365 Customer Service-bedrijfseenheden om de ontbrekende bevoegdheid in te schakelen.
Zoek in de app voor financiën en bedrijfsactiviteiten de bedrijfseenheid die is toegewezen in de verbindingsset Gegevensintegratie.
Meld u aan bij de omgeving in de app voor klantbetrokkenheid, navigeer naar Instelling > Beveiliging en zoek het team van de toegewezen bedrijfseenheid.
Open de pagina voor het team om deze te bewerken en selecteer Rollen beheren.
Wijs in het dialoogvenster Teamrollen beheren de rol toe die de lees-/schrijf bevoegdheid voor de relevante tabellen heeft en selecteer vervolgens OK.
Synchronisatie problemen oplossen in een omgeving met een recent gewijzigde Dataverse-omgeving
Vereiste rol om de fout op te lossen: systeembeheerder
Mogelijk wordt het volgende foutbericht weergegeven wanneer u gegevens in een app voor financiën en bedrijfsactiviteiten maakt:
{entityName":"CustCustomerV3Entity","executionStatus":2,"fieldResponses":[],"recordResponses":[{"errorMessage":"Kan geen nettolading genereren voor entiteit CustCustomerV3Entity","logDateTime":"2019-08-27T18:51:52.5843124Z","verboseError":"Het maken van de nettolading is mislukt met fout Ongeldige URI: de URI is leeg."}],"isErrorCountUpdated":true}
Het foutbericht ziet er als volgt uit in de app voor klantbetrokkenheid:
Er is een onverwachte fout opgetreden vanuit de ISV-code. (Fouttype = ClientError) Onverwachte uitzondering vanuit invoegtoepassing (Execute): Microsoft.Dynamics.Integrator.DualWriteRuntime.Plugins.PostCommitPlugin: System.Exception: verwerken van entiteitsaccount mislukt - (een verbindingspoging is mislukt omdat de verbonden partij niet correct reageert na een bepaalde tijd of de tot stand gebrachte verbinding is mislukt omdat de verbonden host niet heeft gereageerd.
Deze fout treedt op als de Dataverse-omgeving onjuist opnieuw wordt ingesteld wanneer u probeert gegevens aan te maken in de app voor financiën en bedrijfsactiviteiten.
Belangrijk
Als u de omgevingen opnieuw hebt gekoppeld, moet u alle entiteitstoewijzingen stoppen voordat u verder gaat met de te ondernemen beperkende stappen.
Om het probleem op te lossen, moet u stappen in zowel Dataverse als in de app voor financiën en bedrijfsactiviteiten uitvoeren.
Voer de volgende stappen uit in de app voor financiën en bedrijfsactiviteiten:
- Open de entiteit DualWriteProjectConfigurationEntity met de Excel-invoegtoepassing. Als u de invoegtoepassing wilt gebruiken, moet u de ontwerpmodus in de Excel-invoegtoepassing voor financiën en bedrijfsactiviteiten inschakelen en DualWriteProjectConfigurationEntity aan een werkblad toevoegen. Zie Entiteitsgegevens weergeven en bijwerken met Excel voor meer informatie.
- Selecteer en verwijder de records waarmee problemen zijn in de toewijzing voor twee keer wegschrijven en het project. Er zullen twee records bestaan voor elke toewijzing voor twee keer wegschrijven.
- Publiceer de wijzigingen met de Excel-invoegtoepassing. Deze stap is belangrijk omdat hiermee de records uit de entiteit en onderliggende tabellen worden verwijderd.
- Om fouten te voorkomen wanneer u de omgeving voor financiën en bedrijfsactiviteiten of Dataverse-omgeving opnieuw koppelt, moet u ervoor zorgen dat er geen configuraties met twee keer wegschrijven overblijven.
Volg in Dataverse deze stappen:
- Meld u aan bij uw Dataverse-omgeving (bijvoorbeeld
https://*****.crm.dynamics.com/
). - Ga naar Geavanceerde instellingen>Geavanceerd zoeken.
- Selecteer DualWrite Runtime Configuration.
- Selecteer de kolom die u wilt weergeven.
- Selecteer Resultaten om de configuraties weer te geven.
- Alle exemplaren verwijderen.
- Meld u aan bij uw Dataverse-omgeving (bijvoorbeeld
Voer de volgende stappen uit in de app voor financiën en bedrijfsactiviteiten:
- Open de entiteit DualWriteProjectConfigurationEntity met de Excel-invoegtoepassing. Als u de invoegtoepassing wilt gebruiken, moet u de ontwerpmodus in de Excel-invoegtoepassing voor financiën en bedrijfsactiviteiten inschakelen en DualWriteProjectConfigurationEntity aan een werkblad toevoegen. Zie Entiteitsgegevens weergeven en bijwerken met Excel voor meer informatie.
- Selecteer en verwijder de records waarmee problemen zijn in de toewijzing voor twee keer wegschrijven en het project. Er zullen twee records bestaan voor elke toewijzing voor twee keer wegschrijven.
- Publiceer de wijzigingen met de Excel-invoegtoepassing. Deze stap is belangrijk omdat hiermee de records uit de entiteit en onderliggende tabellen worden verwijderd.
- Om fouten te voorkomen wanneer u de omgeving voor financiën en bedrijfsactiviteiten of Dataverse-omgeving opnieuw koppelt, moet u ervoor zorgen dat er geen configuraties met twee keer wegschrijven overblijven.
Fout in live synchronisatie nadat u een volledige kopie van de database hebt gemaakt
Het kan zijn dat u het volgende foutbericht ontvangt nadat u een volledige kopie van de database hebt uitgevoerd van een systeem naar een ander systeem en vervolgens hebt geprobeerd een databasebewerking uit te voeren:
SecureConfig Organization (???) komt niet overeen met werkelijke CRM-organisatie (???).
Het foutbericht wordt weergegeven via de invoegtoepassing twee keer wegschrijven-runtime om te garanderen dat de configuratie voor twee keer wegschrijven die in het ene systeem is ingesteld, niet in een ander systeem kan worden gebruikt.
Als u het probleem wilt oplossen, verwijdert u alle records in de tabel msdyn_dualwriteruntimeconfig nadat u de database hebt hersteld. Raadpleeg Omgevingen voor twee keer wegschrijven loskoppelen en opnieuw koppelen voor meer informatie.
Problemen met live synchronisatie die worden veroorzaakt door een onjuiste syntax van het queryfilter op de toewijzingen voor twee keer wegschrijven
Hoewel de query-expressie voor een filter met toewijzing voor twee keer wegschrijven syntactisch correct is, werkt deze mogelijk niet zoals verwacht. De filterexpressie is op een entiteit en niet op een afzonderlijke gegevensbron van een queryobject. De SQL-query die wordt gegenereerd, retourneert daarom niet de verwachte resultaten.
Hier volgt een voorbeeld.
Query entity = PROJECTENTITY
Query expression = (ParentProject == "")
U zou kunnen verwachten dat projecten zonder bovenliggende gegevens worden uitgefilterd. Het filter werkt echter niet omdat het is vertaald naar een query die op het volgende voorbeeld lijkt.
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
Het werkelijke resultaat is dat het veld parentProject
wordt geëvalueerd naar null
. Deze null
is echter niet gelijk aan de lege tekenreeks. Vanwege deze mismatch retourneert het queryfilter geen geldige resultaten.
Volg deze stappen om het probleem op te lossen.
Voeg een berekende kolom toe die kan worden toegevoegd aan een uitbreidingsmodel en die wordt onderschreven door logica die
null
converteert naar de lege tekenreeks.SysComputedColumn::if(SysComputedColumn::isNullExpression(ParentProject), SysComputedColumn::returnLiteral(""), fieldName);
Gebruik het filter op de nieuwe berekende kolom in plaats van de standaardkolom.
Om het filter te beoordelen in een ontwikkelomgeving kunt u de volgende X++-code gebruiken om de resultaten te valideren. Voer deze code uit als zelfstandig programma. U kunt deze gebruiken om verschillende soorten filters te beoordelen die van toepassing zijn op een entiteit voordat u die filters gebruikt op toewijzingen voor twee keer wegschrijven. De query kan worden uitgevoerd op de database om afwijkingen te beoordelen.
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));
}
Gegevens van apps voor financiën en bedrijfsactiviteiten worden niet gesynchroniseerd met Dataverse
Tijdens live synchronisatie kan er een probleem optreden waarbij slechts een gedeelte van de gegevens wordt gesynchroniseerd tussen apps voor financiën en bedrijfsactiviteiten en Dataverse of waarbij gegevens niet worden gesynchroniseerd.
Notitie
Dit probleem moet in de ontwikkelfase worden verholpen.
Controleer de volgende vereisten voordat u het probleem gaat oplossen:
- Zorg ervoor dat uw aangepaste wijzigingen in één transactiebereik worden geschreven.
- Zakelijke gebeurtenissen en het framewerk voor twee keer wegschrijven verwerken
doinsert()
-,doUpdate()
- enrecordset()
-bewerkingen of records waarskipBusinessEvents(true)
is gemarkeerd, niet. Als uw code binnen deze functies valt, wordt het twee keer wegschrijven niet geactiveerd. - Zakelijke gebeurtenissen moeten worden geregistreerd voor de gegevensbron die is toegewezen. Sommige gegevensbronnen maken mogelijk gebruik van een outer join en kunnen gemarkeerd zijn als alleen-lezen in apps voor financiën en bedrijfsactiviteiten. Deze gegevensbronnen worden niet bijgehouden.
- Wijzigingen worden alleen geactiveerd als de wijzigingen in de toegewezen velden staan. Wijzigingen aan niet-toegewezen velden zullen twee keer wegschrijven niet activeren.
- Zorg ervoor dat filterevaluaties een geldig resultaat opleveren.
Stappen om problemen op te lossen
Veldtoewijzingen controleren op de beheerpagina voor twee keer afschrijven. Als een veld niet is toegewezen vanuit apps voor financiën en bedrijfsactiviteiten aan Dataverse, wordt het niet bijgehouden. In de volgende afbeelding wordt het veld Omschrijving bijvoorbeeld wel bijgehouden vanuit Dataverse, maar niet vanuit apps voor financiën en bedrijfsactiviteiten. Wijzigingen in dat veld in apps voor financiën en bedrijfsactiviteiten worden niet bijgehouden.
Bepaal of de gegevensbron wordt bijgehouden in de definitie van zakelijke gebeurtenissen. In de volgende afbeelding wordt bijvoorbeeld geen veld uit de tabel DefaultDimensionDAVs en de onderliggende tabellen bijgehouden voor wijzigingen. Gegevensbronnen die een outer join gebruiken en die zijn gemarkeerd als alleen-lezen, worden niet bijgehouden.
Bepaal of de toegewezen tabelvelden verschijnen in de tabel BUSINESSEVENTSDEFINITION, zoals weergegeven in de volgende afbeelding. Als u het veld dat u zoekt niet in het queryresultaat vindt, wordt het niet geactiveerd door twee keer wegschrijven.
Voorbeeldscenario
In apps voor financiën en bedrijfsactiviteiten wordt het adres van een contactpersoonrecord bijgewerkt, maar de adreswijziging wordt niet gesynchroniseerd met Dataverse. Dit scenario treedt op omdat geen enkel record in de tabel BusinessEventsDefinition de combinatie van de betreffende tabel en de entiteit heeft. Met name de tabel LogisticsPostalAddress is niet de directe gegevensbron voor de entiteit smmContactpersonCDSV2Entity. De entiteit smmContactpersonCDSV2Entity heeft smmContactPersonV2Entity als de gegevensbron en smmContactPersonV2Entity heeft op zijn beurt LogisticsPostalAddressBaseEntity als gegevensbron. De tabel LogisticsPostalAddress is de gegevensbron voor LogisticsPostalAddressBaseEntity.
Een vergelijkbare situatie kan optreden in sommige niet-standaardpatronen, zoals gevallen waarin de tabel die wordt gewijzigd in apps voor financiën en bedrijfsactiviteiten niet duidelijk aan de entiteit is gekoppeld die de tabel bevat. De primaire adresgegevens worden bijvoorbeeld berekend in de entiteit smmContactPersonCDSV2Entity. Het framewerk voor twee keer schrijven probeert te bepalen hoe een wijziging in een onderliggende tabel weer wordt toegewezen aan entiteiten. Meestal is deze benadering voldoende. In sommige gevallen is de koppeling echter zo complex dat u specifiek moet zijn. U moet ervoor zorgen dat de RecId van de gerelateerde tabel rechtstreeks beschikbaar is voor de entiteit. Voeg vervolgens een statische methode toe om de tabel op wijzigingen te controleren.
Bekijk voor een voorbeeld de methode smmContactPersonCDSV2Entity::getEntityDataSourceToFieldMapping(). CustCustomerV3entity en VendVendorV2Entity zijn aangepast om deze situatie te verwerken.
Volg deze stappen om het probleem op te lossen.
Voeg een veld PrimaryPostalAddressRecId toe aan de entiteit entiteit smmContactPersonV2Entity. Maak het intern.
Veld toegevoegd aan de entiteit smmContactPersonV2Entity.
Voeg de volgende methode toe aan de klasse smmContactPersonCDSV2Entity.
public static container getEntityDataSourceToFieldMapping(container mapping) { mapping += [[tablestr(smmContactPersonCDSV2Entity), tablenum(LogisticsPostalAddress), fieldstr(smmContactPersonCDSV2Entity, PrimaryPostalAddressRecId)]]; return mapping; }
Synchroniseer de database en maak een build van het programma.
Stop alle toewijzingen voor twee keer wegschrijven die zijn aangemaakt voor de entiteit smmContactPersonCDSV2Entity.
Start de toewijzing. U moet de nieuwe tabel (in dit voorbeeld LogisticsPostalAddress) bekijken die u bent begonnen bij te houden met behulp van de kolom RefTableName voor de rij waarin de waarde voor refentityname gelijk is aan smmContactPersonCDSV2Entity in de tabel BusinessEventsDefinition.
Fout bij het aanmaken van een record waar meerdere records vanuit een app voor financiën en bedrijfsactiviteiten naar Dataverse worden verzonden in dezelfde batch
Voor elke transactie worden gegevens door een app voor financiën en bedrijfsactiviteiten aangemaakt in een batch, en die batch wordt naar Dataverse verzonden. Als er twee records worden aangemaakt als onderdeel van dezelfde transactie die naar elkaar verwijzen, wordt er mogelijk een foutbericht weergegeven dat op het volgende voorbeeld in de app voor financiën en bedrijfsactiviteiten lijkt:
Kan gegevens niet naar aaa_fundingsources van entiteit schrijven. Kan ebecsfs_contracts met waarden {PC00...} niet opzoeken. Kan aaa_fundingsources met waarden {PC00...} niet opzoeken. Schrijven naar aaa_fundingsources is mislukt met foutbericht Uitzonderingsbericht: De externe server heeft een foutmelding geretourneerd: (400) Ongeldige aanvraag.
Om dit probleem op te lossen, maakt u relaties tussen entiteiten aan in de app voor financiën en bedrijfsactiviteiten om aan te geven dat de twee entiteiten aan elkaar gerelateerd zijn en dat de gerelateerde records in dezelfde transactie worden afgehandeld.
Uitgebreide logboekregistratie van foutberichten inschakelen
In een app voor financiën en bedrijfsactiviteiten kunnen fouten optreden die gerelateerd zijn aan de Dataverse-omgeving. Het foutbericht bevat mogelijk niet de volledige tekst van het bericht of andere relevante gegevens. Als u meer informatie wilt, kunt u uitgebreide logboekregistratie inschakelen door de vlag IsDebugMode in te stellen die beschikbaar is voor de entiteit DualWriteProjectConfigurationEntity in alle projectconfiguraties in apps voor financiën en bedrijfsactiviteiten.
- Open de entiteit DualWriteProjectConfigurationEntity met de Excel-invoegtoepassing. Als u de invoegtoepassing wilt gebruiken, moet u de ontwerpmodus in de Excel-invoegtoepassing voor financiën en bedrijfsactiviteiten inschakelen en DualWriteProjectConfigurationEntity aan een werkblad toevoegen. Zie Entiteitsgegevens weergeven en bijwerken met Excel voor meer informatie.
- Stel de vlag IsDebugMode in op Ja in het project.
- Voer het scenario uit.
- De uitgebreide logboeken zijn beschikbaar in de tabel DualWriteErrorLog. Als u gegevens wilt opzoeken met de tabelbrowser, gebruikt u de volgende URL:
https://XXXaos.cloudax.dynamics.com/?mi=SysTableBrowser&tableName=DualWriteErrorLog
. - Als u meer logboeken in wilt vastleggen in foutopsporingsmodus, installeer dan de update in KB 4595434 (Oplossing voor lege waarden die worden doorgegeven in live synchronisatie voor twee keer wegschrijven).
Foutmelding wanneer u een adres voor een klant of contactpersoon toevoegt
Mogelijk wordt het volgende foutbericht weergegeven wanneer u een adres voor een klant of contactpersoon probeert toe te voegen in apps voor financiën en bedrijfsactiviteiten of in Dataverse:
Kan geen gegevens naar entiteit msdyn_partypostaladdresses schrijven. Schrijven naar DirPartyPostalAddressLocationCDSEntity is mislukt met foutbericht Aanvraag mislukt met statuscode BadRequest en CDS-foutcode: 0x80040265 antwoordbericht: Er is een fout opgetreden in de invoegtoepassing. Er bestaat al een record met de kenmerkwaarden Locatie-ID. Voor de sleutel van de locatie-ID en die van de entiteit moet deze set kenmerken unieke waarden bevatten. Selecteer unieke waarden en probeer het opnieuw.
Om het probleem op te lossen, installeert u de versie van het pakket voor indeling met twee keer wegschrijven versie (2.2.2.60), zodat de sleutels in de tabel Adres worden gedefinieerd zoals getoond in de volgende tabel.
Eigenschap | Waarde |
---|---|
Weergavenaam | Locatiesleutel |
Naam | msdyn_locationkey |
Velden | msdyn_locationid, parentid |
Status | Actief |
Systeemtaak | Leeg |
Fout wanneer u een klant toevoegt in Dataverse
Mogelijk wordt het volgende foutbericht weergegeven wanneer u probeert een klant toe te voegen in Dataverse:
'RecordError0': 'Schrijven mislukt voor entiteit Klanten V3 met onbekende uitzondering - Partijrecord niet gevonden voor partijtype 'Organisatie'}'.
Wanneer er een klant wordt aangemaakt in Dataverse, wordt er een nieuw partijnummer gegenereerd. Het foutbericht wordt getoond wanneer de klantrecord samen met de partij wordt gesynchroniseerd naar apps voor financiën en bedrijfsactiviteiten, maar er al een klantrecord bestaat met een ander partijnummer.
Om het probleem op te lossen, kan de klant worden opgezocht via een zoekactie op partij. Als de klant niet bestaat, maak dan een nieuwe klantrecord aan. Als de klant wel bestaat, gebruik dan de bestaande partij om de nieuwe klantrecord aan te maken.
Foutmelding wanneer u een nieuwe klant, leverancier of contactpersoon aanmaakt in Dataverse
Mogelijk wordt het volgende foutbericht weergegeven wanneer u een nieuwe klant, leverancier of contactpersoon probeert aan te maken in Dataverse
Kan het type van een partij niet bijwerken van 'DirOrganization' naar 'DirPerson'; in plaats daarvan moet de bestaande partij worden verwijderd, gevolgd door het uitvoeren van een invoegactie met het nieuwe type.
In Dataverse is er een nummerreeks op de tabel msdyn_party. Wanneer er een account wordt aangemaakt in Dataverse, wordt er een nieuwe partij aangemaakt (bijvoorbeeld Partij-001 van het type Organisatie). Deze gegevens worden verzonden naar de app voor financiën en bedrijfsactiviteiten. Als de Dataverse-omgeving opnieuw wordt ingesteld of de omgeving voor financiën en bedrijfsactiviteiten aan een andere Dataverse-omgeving wordt gekoppeld en er vervolgens een nieuwe contactpersoonrecord wordt aangemaakt in Dataverse, wordt er een nieuwe partijwaarde gemaakt die begint met Partij-001. Dit keer is de partijrecord die wordt aangemaakt Partij-001 van het type Persoon. Wanneer deze gegevens worden gesynchroniseerd, tonen apps voor financiën en bedrijfsactiviteiten het voorgaande foutbericht, omdat partijrecord Partij-001 van het type Organisatie al bestaat.
Om het probleem op te lossen, wijzigt u de automatische nummerreeks voor het veld msdyn_partynumber van de tabel msdyn_party in Dataverse naar een andere automatische nummerreeks.
Prestatieprobleem bij toewijzingen klant of contactpersoon
Mogelijk kunt u de prestaties van live synchronisatie voor klanten en contactpersonen marginaal verbeteren door de methode getEntityDataSourceToFieldMapping (in de entiteit CustCustomerV3Entity) en de methode getEntityDataSourceToFieldMapping (in de entiteit smmContactPersonCDSV2Entity) aan te passen. Door deze aanpassingen wordt het aantal records in de tabel BusinessEventsDefinition beperkt. Door deze afname van het aantal records neemt het aantal gebeurtenissen dat wordt gegenereerd ook af.
De methode getEntityDataSourceToFieldMapping in de entiteit CustCustomerV3Entity zorgt ervoor dat een update van het elektronische adres of postadres van de klant zakelijke gebeurtenissen activeert, zodat de bijgewerkte gegevens naar Dataverse worden verzonden. Als u niet alle velden gebruikt en de informatie bij twee keer wegschrijven niet nodig hebt, maakt u van de betreffende regels in de methode een commentaar. Elk(e) bij te houden veld en tabel die wordt toegevoegd in deze methode, voegt een record toe in de tabel BusinessEventsDefinition voor de combinatie van de bijgehouden tabel en de bijgehouden entiteit.
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;
}
Op vergelijkbare wijze zorgt de methode getEntityDataSourceToFieldMapping in de entiteit smmContactPersonCDSV2Entity ervoor dat elke update van het elektronische adres of postadres van de contactpersoon zakelijke gebeurtenissen activeert, zodat de bijgewerkte gegevens naar Dataverse worden verzonden. In de methode kunt u alle regels voor velden die u niet gebruikt, omzetten naar commentaar.
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;
}
Volg deze stappen nadat u de methoden hebt bijgewerkt.
- Synchroniseer de database en maak een build van het programma.
- Stop alle toewijzingen voor twee keer wegschrijven die zijn aangemaakt voor de entiteiten smmContactPersonCDSV2Entity en CustCustomerV3Entity.
- Start de toewijzingen. U hoort minder records te zien in de entiteiten smmContactPersonCDSV2Entity en CustCustomerV3Entity en de tabel BusinessEventsDefinition en de prestaties kunnen marginaal verbeteren.