# 240 · contactsnewfromce

> Technisches Mapping des Jobs `contactsnewfromce` (`CEContacts`).

---

LLMS index: [llms.txt](/llms.txt)

---

| Eigenschaft | Wert |
|---|---|
| Order | 240 |
| Job | `contactsnewfromce` |
| Mapping | `CEContacts` |
| Richtung | CE → BC |
| Quellverbindung | CRM_Test |
| Zielverbindung | BC_Test |
| Quelltabelle (API) | `contact` aus `BC_Test-seitig, kein API-Pfad` |
| Zieltabelle | `acdcontacts` |
| Zeitplan | 0 */2 * * * * |
| Filter | `JSON-Filter: IsNull(wysa_bcsystemid) UND OptionSetValue(wysa_sync2bc=799840000)` |
| Watermark | — |
| Response-Job | `contactsresponsefrombc` |
| Fachliche Doku | [Neuer Kontakt nach BC](../kontakt/cecontacts/) |

## Feldzuordnung

| Quellfeld | Zielfeld | Operation | Details |
|---|---|---|---|
| `address1_city` | `city` | — | — |
| `address1_line1` | `address` | — | — |
| `address1_line2` | `address2` | — | — |
| `address1_postalcode` | `postCode` | — | — |
| `contactid` | `dataverseId` | — · **Schlüssel** | — |
| — | `contactType` | DefaultValue | = `Person` |
| `emailaddress1` | `eMail` | — | — |
| `firstname` | `firstName` | — | — |
| `lastname` | `surname` | — | — |
| `middlename` | `middleName` | — | — |
| `mobilephone` | `mobilePhoneNumber` | — | — |
| `_parentcustomerid` | `companyNumber` | LookupValue | liest `wysa_bccontactnumber` aus `account` über `parentcustomerid` |
| `telephone1` | `phoneNumber` | — | — |
| `_wysa_address1_countryid` | `countryRegionCode` | LookupValue | liest `wysa_bccode` aus `wysa_country` über `wysa_address1_countryid` |
| `_wysa_bcsalespersonid.wysa_code` | `salespersonCode` | LookupValue | liest `wysa_code` aus `wysa_bcsalesperson` über `wysa_bcsalespersonid` |
| `_wysa_language.wysa_bccode` | `languageCode` | LookupValue | liest `wysa_bccode` aus `wysa_language` über `wysa_language` |
| `_wysa_salutationbcid.wysa_code` | `salutationCode` | LookupValue | liest `wysa_code` aus `wysa_bcsalutation` über `wysa_salutationbcid` |

## Alternate Key

```json
{
  "keyType": "Filter",
  "keyValues": [
    {
      "attributeName": "id",
      "keyName": "dataverseId",
      "rank": 1
    }
  ],
  "keyAttributeFromExisting": "id",
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}
```

Die CE-GUID wird in das BC-Feld `dataverseId` geschrieben; ein bereits angelegter
Datensatz wird über einen Filter auf dieses Feld wiedergefunden. Das macht den Job
wiederholbar, ohne Dubletten zu erzeugen.

## Weitere technische Details

### Transformationen im Detail

Alle fünf `LookupValue`-Operationen arbeiten mit `LookupType: Attribute` und
`UseCache: true` und unterscheiden sich nur in Nachschlagetabelle und -feld:

| Quellfeld | Nachschlagetabelle | Nachschlagefeld |
|---|---|---|
| `wysa_address1_countryid` | `wysa_country` | `wysa_bccode` |
| `wysa_language` | `wysa_language` | `wysa_bccode` |
| `wysa_salutationbcid` | `wysa_bcsalutation` | `wysa_code` |
| `wysa_bcsalespersonid` | `wysa_bcsalesperson` | `wysa_code` |
| `parentcustomerid` | `account` | `wysa_bccontactnumber` |

Beispiel übergeordnete Firma:

```json
{
  "Operations": [{
    "Name": "LookupValue",
    "Parameters": {
      "LookupType": "Attribute",
      "SourceField": "parentcustomerid",
      "LookupTable": "account",
      "LookupField": "wysa_bccontactnumber",
      "UseCache": true
    }
  }]
}
```

**Kontaktart** — ohne Quellfeld, fester Wert `Person` per `DefaultValue`. Da
[`CEContactsUpdates`](../contactupdatesfromce/) das Feld nicht enthält, wird es
ausschließlich bei der Neuanlage gesetzt.
