feat: Add EspoCRM and Advoware integration for Beteiligte comparison

- Implemented `compare_beteiligte.py` script for comparing Beteiligte structures between EspoCRM and Advoware.
- Created `beteiligte_comparison_result.json` to store comparison results.
- Developed `EspoCRMAPI` service for handling API interactions with EspoCRM.
- Added comprehensive documentation for the EspoCRM API service.
- Included error handling and logging for API operations.
- Enhanced entity management with CRUD operations and search capabilities.
This commit is contained in:
2026-02-07 14:42:58 +00:00
parent 36552903e7
commit e6ab22d5f4
12 changed files with 2143 additions and 1426 deletions

View File

@@ -0,0 +1,399 @@
{
"espocrm_data": {
"id": "68e4af00172be7924",
"name": "dasdas dasdasdas dasdasdas",
"deleted": false,
"salutationName": null,
"rechtsform": "GmbH",
"firmenname": "Filli llu GmbH",
"firstName": "dasdasdas",
"lastName": "dasdas",
"dateOfBirth": null,
"description": null,
"emailAddress": "meier@meier.de",
"phoneNumber": null,
"createdAt": "2025-10-07 06:11:12",
"modifiedAt": "2026-01-23 21:58:41",
"betnr": 1234,
"advowareLastSync": null,
"syncStatus": "clean",
"handelsregisterNummer": "12244546",
"handelsregisterArt": "HRB",
"disgTyp": "Unbekannt",
"middleName": "dasdasdas",
"emailAddressIsOptedOut": false,
"emailAddressIsInvalid": false,
"phoneNumberIsOptedOut": null,
"phoneNumberIsInvalid": null,
"streamUpdatedAt": null,
"emailAddressData": [
{
"emailAddress": "meier@meier.de",
"lower": "meier@meier.de",
"primary": true,
"optOut": false,
"invalid": false
},
{
"emailAddress": "a@r028tuj08wefj0w8efjw0d.de",
"lower": "a@r028tuj08wefj0w8efjw0d.de",
"primary": false,
"optOut": false,
"invalid": false
}
],
"phoneNumberData": [],
"createdById": "68d65929f18c2afef",
"createdByName": "Admin",
"modifiedById": "68d65929f18c2afef",
"modifiedByName": "Admin",
"assignedUserId": null,
"assignedUserName": null,
"teamsIds": [],
"teamsNames": {},
"adressensIds": [],
"adressensNames": {},
"calls1Ids": [],
"calls1Names": {},
"bankverbindungensIds": [],
"bankverbindungensNames": {},
"isFollowed": false,
"followersIds": [],
"followersNames": {}
},
"advoware_data": {
"betNr": 104860,
"kommunikation": [
{
"rowId": "FBABAAAANJFGABAAGJDOAEAPAAAAAPGFPDAFAAAA",
"id": 88002,
"betNr": 104860,
"kommArt": 0,
"tlf": "0511/12345-60",
"bemerkung": null,
"kommKz": 0,
"online": false
},
{
"rowId": "FBABAAAABBLIABAAGIDOAEAPAAAAAPHBEOAEAAAA",
"id": 114914,
"betNr": 104860,
"kommArt": 0,
"tlf": "kanzlei@ralup.de",
"bemerkung": null,
"kommKz": 0,
"online": true
}
],
"kontaktpersonen": [],
"beteiligungen": [
{
"rowId": "LAADAAAAAHMDABAAGAAEIPBAAAAADGKEMPAFAAAA",
"beteiligtenArt": "Sachverständiger",
"akte": {
"rowId": "",
"nr": 2020001684,
"az": "1684/20",
"rubrum": "Siggel / Siggel",
"referat": "SON",
"wegen": "Bruderzwist II",
"ablage": 1,
"abgelegt": null
}
},
{
"rowId": "LAADAAAAPGKFABAAGAAEIPBAAAAADGJOMBABAAAA",
"beteiligtenArt": "Sachverständiger",
"akte": {
"rowId": "",
"nr": 2020000203,
"az": "203/20",
"rubrum": "Siggel / Siggel",
"referat": "SON",
"wegen": "Bruderzwist",
"ablage": 1,
"abgelegt": null
}
},
{
"rowId": "LAADAAAAPJAGACAAGAAEIPBAAAAADGLDFGADAAAA",
"beteiligtenArt": "Mandant",
"akte": {
"rowId": "",
"nr": 2019001145,
"az": "1145/19",
"rubrum": "Siggel / Siggel LALA",
"referat": "VMH",
"wegen": null,
"ablage": 0,
"abgelegt": null
}
}
],
"adressen": [
{
"rowId": "KOADAAAAALNFAAAAFPAEIPBAAAAADGGPGAAJAAAA",
"id": 0,
"beteiligterId": 104860,
"reihenfolgeIndex": 1,
"strasse": "Musterstraße 12",
"plz": "12345",
"ort": "Musterort",
"land": "D",
"postfach": null,
"postfachPLZ": null,
"anschrift": "Frau\r\nAngela Mustermanns\r\nVorzimmer\r\nMusterstraße 12\r\n12345 Musterort",
"standardAnschrift": false,
"bemerkung": null,
"gueltigVon": null,
"gueltigBis": null
}
],
"bankkverbindungen": [
{
"rowId": "EPABAAAAHBNFAAAAFPNBCGAAAAAAAPDIJDAJAAAA",
"id": 54665,
"bank": null,
"ktoNr": null,
"blz": null,
"iban": null,
"bic": null,
"kontoinhaber": null,
"mandatsreferenz": null,
"mandatVom": null
}
],
"rowId": "EMABAAAAFBNFAAAAFOAEIPBAAAAAAOMNKPAHAAAA",
"id": 104860,
"anschrift": "Frau\r\nAngela Mustermanns\r\nVorzimmer\r\nMusterstraße 12\r\n12345 Musterort",
"strasse": "Musterstraße 12",
"plz": "12345",
"ort": "Musterort",
"email": null,
"emailGesch": "kanzlei@ralup.de",
"mobil": null,
"internet": null,
"telGesch": "0511/12345-60",
"telPrivat": null,
"faxGesch": null,
"faxPrivat": null,
"autotelefon": null,
"sonstige": null,
"ePost": null,
"bea": null,
"art": null,
"vorname": "Angela",
"name": "Mustermanns",
"kurzname": null,
"geburtsname": null,
"familienstand": null,
"titel": null,
"anrede": "Frau",
"bAnrede": "Sehr geehrte Frau Mustermanns,",
"geburtsdatum": null,
"sterbedatum": null,
"zusatz": "Vorzimmer",
"rechtsform": "Frau",
"geaendertAm": null,
"geaendertVon": null,
"angelegtAm": null,
"angelegtVon": null,
"handelsRegisterNummer": null,
"registergericht": null
},
"comparison": {
"espo_fields": [
"emailAddressIsInvalid",
"followersNames",
"id",
"handelsregisterNummer",
"teamsNames",
"assignedUserName",
"modifiedAt",
"modifiedByName",
"betnr",
"middleName",
"disgTyp",
"bankverbindungensNames",
"phoneNumberIsOptedOut",
"adressensIds",
"emailAddressData",
"deleted",
"teamsIds",
"phoneNumber",
"isFollowed",
"advowareLastSync",
"createdById",
"createdAt",
"calls1Ids",
"handelsregisterArt",
"name",
"phoneNumberIsInvalid",
"rechtsform",
"emailAddress",
"emailAddressIsOptedOut",
"firmenname",
"description",
"adressensNames",
"createdByName",
"lastName",
"assignedUserId",
"salutationName",
"bankverbindungensIds",
"phoneNumberData",
"dateOfBirth",
"modifiedById",
"firstName",
"followersIds",
"streamUpdatedAt",
"syncStatus",
"calls1Names"
],
"advo_fields": [
"kontaktpersonen",
"rowId",
"id",
"angelegtVon",
"zusatz",
"bAnrede",
"faxGesch",
"bankkverbindungen",
"geburtsname",
"plz",
"adressen",
"kurzname",
"telPrivat",
"anrede",
"sonstige",
"email",
"titel",
"sterbedatum",
"faxPrivat",
"autotelefon",
"name",
"kommunikation",
"rechtsform",
"art",
"geaendertAm",
"anschrift",
"beteiligungen",
"bea",
"handelsRegisterNummer",
"registergericht",
"internet",
"ort",
"geburtsdatum",
"angelegtAm",
"mobil",
"emailGesch",
"ePost",
"strasse",
"vorname",
"familienstand",
"betNr",
"geaendertVon",
"telGesch"
],
"common": [
"name",
"id",
"rechtsform"
],
"espo_only": [
"emailAddressIsInvalid",
"followersNames",
"handelsregisterNummer",
"teamsNames",
"assignedUserName",
"modifiedAt",
"modifiedByName",
"betnr",
"middleName",
"disgTyp",
"bankverbindungensNames",
"phoneNumberIsOptedOut",
"adressensIds",
"emailAddressData",
"deleted",
"teamsIds",
"phoneNumber",
"isFollowed",
"advowareLastSync",
"createdById",
"createdAt",
"calls1Ids",
"handelsregisterArt",
"phoneNumberIsInvalid",
"emailAddress",
"emailAddressIsOptedOut",
"firmenname",
"description",
"adressensNames",
"createdByName",
"lastName",
"assignedUserId",
"salutationName",
"bankverbindungensIds",
"phoneNumberData",
"dateOfBirth",
"modifiedById",
"firstName",
"followersIds",
"streamUpdatedAt",
"syncStatus",
"calls1Names"
],
"advo_only": [
"kontaktpersonen",
"rowId",
"angelegtVon",
"zusatz",
"bAnrede",
"faxGesch",
"bankkverbindungen",
"geburtsname",
"plz",
"adressen",
"kurzname",
"telPrivat",
"anrede",
"sonstige",
"email",
"titel",
"sterbedatum",
"autotelefon",
"faxPrivat",
"kommunikation",
"art",
"geaendertAm",
"anschrift",
"beteiligungen",
"bea",
"handelsRegisterNummer",
"registergericht",
"internet",
"ort",
"geburtsdatum",
"angelegtAm",
"mobil",
"emailGesch",
"ePost",
"strasse",
"vorname",
"familienstand",
"betNr",
"geaendertVon",
"telGesch"
],
"suggested_mappings": [
[
"name",
"name"
],
[
"emailAddress",
"email"
]
]
}
}