# 550 · serviceobjectsfrombc

> Technisches Mapping des Jobs `serviceobjectsfrombc` (`BCServiceObjects`).

---

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

---

| Eigenschaft | Wert |
|---|---|
| Order | 550 |
| Job | `serviceobjectsfrombc` |
| Mapping | `BCServiceObjects` |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | `serviceObjects` aus `microsoft/subsBilling/v1.0` |
| Zieltabelle | `wysa_bcserviceobject` |
| Zeitplan | 0 */2 * * * * |
| Filter | `{{lastModifiedDateTime gt %watermark%}}` |
| Watermark | `lastModifiedDateTime` (Typ `datetime`) |
| Response-Job | — |
| Fachliche Doku | [Abonnements aus BC](../abonnement/bcserviceobjects/) |

## Feldzuordnung

| Quellfeld | Zielfeld | Operation | Details |
|---|---|---|---|
| `billToContactNo` | `wysa_billtocontactid` | Lookup | → `contact` über `wysa_bccodekey` (`billToContactNo` → `wysa_bccontactnumber`) |
| `billToCompanyContactNo` | `wysa_billtocustomerid` | Lookup | → `account` über `wysa_bccodekey` (`billToCompanyContactNo` → `wysa_bccontactnumber`) |
| `customerReference` | `wysa_customerreference` | — | — |
| `description` | `wysa_productdescription` | — | — |
| `shipToContactNo` | `wysa_endusercontactid` | Lookup | → `contact` über `wysa_bccodekey` (`shipToContactNo` → `wysa_bccontactnumber`) |
| `shipToCompanyContactNo` | `wysa_endusercustomerid` | Lookup | → `account` über `wysa_bccodekey` (`shipToCompanyContactNo` → `wysa_bccontactnumber`) |
| `sourceNo` | `wysa_productnumber` | — | — |
| `no` | `wysa_name` | — | — |
| `no` | `wysa_number` | — · **Schlüssel** | — |
| `provisionEndDate` | `wysa_provisionenddate` | — | — |
| `provisionStartDate` | `wysa_provisionstartdate` | — | — |
| `quantityDecimal` | `wysa_quantity` | — | — |
| `serialNo` | `wysa_serialnumber` | — | — |
| `systemId` | `wysa_bcsystemid` | — | — |
| `unitOfMeasure` | `wysa_uom` | — | — |
| `version` | `wysa_version` | — | — |
| `null` | `wysa_subscriptiontype` | DefaultValue | = `799840000` |

## Alternate Key

```json
{
  "keyType": "CustomKey",
  "keyName": "wysa_numberkey",
  "keyValues": [
    {
      "attributeName": "no",
      "keyName": "wysa_number",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}
```

## Weitere technische Details

### Transformationen im Detail

Vier Lookups, alle über das Feld `wysa_bccontactnumber` und den Alternate Key
`wysa_bccodekey`:

| Quellfeld | Zieltabelle | Zielfeld |
|---|---|---|
| `billToContactNo` | `contact` | `wysa_billtocontactid` |
| `billToCompanyContactNo` | `account` | `wysa_billtocustomerid` |
| `shipToContactNo` | `contact` | `wysa_endusercontactid` |
| `shipToCompanyContactNo` | `account` | `wysa_endusercustomerid` |

Beispiel Rechnungsempfänger Firma:

```json
{
  "Operations": [{
    "Name": "Lookup",
    "Parameters": {
      "TargetTable": "account",
      "TargetKey": {
        "KeyType": "CustomKey",
        "KeyName": "wysa_bccodekey",
        "KeyValues": [
          { "keyName": "wysa_bccontactnumber", "attributeName": "billToCompanyContactNo", "rank": 1 }
        ]
      }
    }
  }]
}
```

**Abonnementart** — ohne Quellfeld, fester Wert:

```json
{
  "Operations": [{
    "Name": "DefaultValue",
    "Parameters": { "DefaultValue": "799840000" }
  }]
}
```

Der Wert `799840000` stammt aus dem lösungseigenen Nummernbereich — siehe
[Wertelisten](../../datenmodell/wertelisten/).

### Beobachtungen

Die Quelle liegt **nicht** unter `singhammerITConsulting/dyce/v2.0/` wie alle übrigen
Abgleiche, sondern ist die Schnittstelle der Abonnementverwaltung von Business Central
selbst.

Adressiert wird über die fachliche Abonnementnummer, nicht über die BC System-ID — anders
als bei den [Wertelisten](../../stammdaten/wertelisten/) und anders als bei den
Abonnementzeilen ([`servicecommitmentsfrombc`](../servicecommitmentsfrombc/)).
