# onOffice-Import

{/* AUTO-SYNCED SOURCE: this page lives in apps/app/src/modules/db-leads/docs/ and is mirrored into the docs app by `bun sync:module-docs`. Edit it in the module, not in apps/docs. */}

<Lead>
Der onOffice-Import holt deine **Bestandsdatenbank** in DB-Leads, Adressen samt Aktivitäts-Historie, und macht sie für den [Datenbank-Scan](/tools/db-leads/datenbank-scan) durchsuchbar. Im Hintergrund, idempotent und auch bei sehr großen Adressbüchern zuverlässig.
</Lead>

## 1. Verbindung einrichten

Die onOffice-**Verbindung** richtest du **einmal zentral** unter **Einstellungen → Integrationen → onOffice** ein, nicht im Tool. Eine Verbindung, die jedes Tool nutzt, sicher an einem Ort. Ohne Verbindung importiert das Tool nichts, sondern sagt dir, dass die Quelle fehlt. Wenn du den Ablauf zuerst ansehen willst, lädst du im Einrichtungs-Assistenten ausdrücklich **Beispieldaten**: rund 40 erfundene Kontakte, überall als solche gekennzeichnet, jederzeit mit einem Klick entfernbar und beim ersten Abgleich gegen dein echtes onOffice automatisch weg.

<ButtonLink href="/help/integrations/onoffice">Vollständige onOffice-Anleitung</ButtonLink>

## 2. Felder zuordnen

Die Feldzuordnung liegt zentral bei der onOffice-Integration (Einstellungen, Integrationen, onOffice): Dort steuerst du, welche onOffice-Felder ins zentrale Adressbuch kommen. Das Tool übernimmt die Standard-Felder (Vorname, Name, E-Mail, Telefon, Mobil, Straße, PLZ, Ort, KdNr, Ansprechpartner) automatisch daraus.

## 2b. Eigene Felder für die Analyse freigeben

Unter **Einstellungen, Integrationen, onOffice** gibt es neben der Feldzuordnung den Bereich **KI-Kontext**. Dort stehen alle Felder deines onOffice-Kontos, auch die selbst angelegten, nach Kategorien sortiert und durchsuchbar.

Was du dort anhakst, liest die Analyse zusätzlich mit und darf es im Briefing als Beleg zitieren, und zwar unter seinem onOffice-Namen. Hast du zum Beispiel ein eigenes Feld "Status Vorqualifizierung", steht im Briefing später "Status Vorqualifizierung: Angeschrieben".

Drei Dinge, die du wissen solltest:

- **Du brauchst kein Plattform-Feld auszuwählen.** Der Name aus onOffice ist die Bedeutung. Ein Haken genügt.
- **Was nicht angehakt ist, wird gar nicht erst geholt.** Der Abgleich fragt onOffice nur nach den Feldern, die zugeordnet oder freigegeben sind.
- **Die Werte kommen mit dem nächsten Abgleich.** Nach dem Speichern einmal synchronisieren, dann stehen sie an den Kontakten.

Wenn ein Feldname für sich nicht selbst erklärend ist, kannst du in einem Satz dazuschreiben, was darin steht. Das geht direkt unter dem Haken.

Felder, deren Inhalt ein geschütztes Merkmal ist (Geburtsdatum, Alter, Geschlecht, Herkunft, Religion, Familienstand, Gesundheit), lassen sich nicht freigeben. Sie stehen mit einem Schloss und einer Begründung in der Liste. Als normales Plattform-Feld kannst du sie weiterhin zuordnen: die Sperre gilt nur für das, was die Analyse bewertet.

<Tip title="KdNr ist der Schlüssel">
Die Kundennummer (KdNr) ist der externe Schlüssel, über den der Import erkennt, ob ein Lead schon existiert. Deshalb wird sie immer mit angefragt, auch ohne eigene Zuordnung.
</Tip>

## 3. Synchronisieren

Starte den Sync über den **Sync**-Button im Board oder unter **Einstellungen → Synchronisierung → Synchronisieren**.

Nach dem ersten vollständigen Import holt jeder weitere Abgleich nur noch, was sich in onOffice seit dem letzten Mal geändert hat. Das dauert Sekunden, nicht Stunden, und meldet sich am Ende mit dem Ergebnis. Ein Abgleich ohne Neuzugänge sagt „Alles aktuell“ und nennt, wie viele Kontakte und Einträge er geprüft hat; der Bestand bleibt dabei vollständig erhalten. Während des Laufs drehen sich die Pfeile auf dem Sync-Knopf.

<Steps>
  <Step title="Erste Seite sofort">
    Die erste Seite wird direkt importiert, du siehst also umgehend erste Ergebnisse.
  </Step>
  <Step title="Rest im Hintergrund">
    Der große Rest läuft als Hintergrund-Job in Paketen weiter. Die Anzeige nennt den laufenden Schritt (erst Adressen, dann Aktivitäten), wie viele von wie vielen Datensätzen durch sind, wie lange es schon läuft und wie lange es voraussichtlich noch dauert.
  </Step>
  <Step title="Abschluss">
    Am Ende zeigt der Status neue und aktualisierte Einträge und, falls vorhanden, die fehlgeschlagenen Datensätze mit Grund.
  </Step>
</Steps>

<Callout tone="warning" title="Höchstens einmal täglich">
Ein vollständiger Abgleich lässt sich alle 20 Stunden anstoßen. Das ist keine Schikane: Ein neuer Lauf beginnt die Aktivitäten wieder von vorne, und bei einem großen Maklerbuch verwirft ein Neustart damit die Arbeit mehrerer Stunden. Startest du zu früh, nennt die Meldung die verbleibende Wartezeit.

Ein unterbrochener Lauf ist kein Problem. Der nächste setzt dort an, wo der weiteste vorherige stehen geblieben ist.
</Callout>

<Callout tone="note" title="Du kannst die Seite schließen">
Der Abgleich gehört nicht dem Browserfenster. Bei einem großen Adressbuch läuft der erste Durchlauf Stunden, und du kannst die Seite in dieser Zeit schließen, neu laden oder auf einem anderen Gerät öffnen: Der Stand steht immer da, und der Knopf lässt sich nicht versehentlich ein zweites Mal drücken. Bleibt der Hintergrund-Dienst länger als fünf Minuten stumm, sagt die Seite das und nennt den Stand, bei dem es stehen geblieben ist.

Meldet onOffice für eine Liste keine Gesamtzahl, steht statt einer Prozentangabe die Zahl der bisher gelesenen Datensätze. Das ist Absicht: Eine Prozentzahl, die nicht auf einer echten Gesamtzahl beruht, wäre geraten.
</Callout>

## Was den Import robust macht

<DefinitionList>
  <DefItem term="Idempotent">Erneutes Synchronisieren aktualisiert bestehende Leads über die KdNr, statt zu duplizieren. Ein Teil-Import, der nur eine E-Mail bringt, überschreibt kein bestehendes Telefon.</DefItem>
  <DefItem term="Paketweise & fortsetzbar">Der Import läuft in Chunks über die Hintergrund-Queue. Kein einzelner Aufruf läuft in ein Zeitlimit; ein abgebrochener Lauf setzt am gespeicherten Cursor wieder auf.</DefItem>
  <DefItem term="Fehler-Erfassung">Fehlgeschlagene Datensätze werden mit externer ID und Grund festgehalten. Du siehst genau, welche Einträge Probleme machten, statt nur einer Fehlerzahl.</DefItem>
  <DefItem term="Phase beim Import">Importierte Kontakte landen in der ersten Pipeline-Phase, nicht im Nirgendwo.</DefItem>
  <DefItem term="Aktivitäten inklusive">Nach den Adressen holt eine zweite Phase die onOffice-Aktivitäten (E-Mails, Anrufe, Termine, Portalanfragen) und verknüpft sie mit den Leads. Das ist die Datenbasis für [Datenbank-Scan](/tools/db-leads/datenbank-scan) und [Akquise-Agent](/tools/db-leads/akquise-agent): In diesen Texten stecken die Verkäufer-Signale. Sichtbar als zweite Zeile im Synchronisierung-Tab.</DefItem>
  <DefItem term="Gelöschte Kontakte gehen mit">Löschst du einen Kontakt in onOffice, verschwindet er nach dem nächsten Abgleich auch aus DB-Leads, samt Briefing, Funden, Verlauf und Objekt-Hinweisen. Das Werkzeug folgt dabei dem zentralen Adressbuch: Erst stellt der Adress-Abgleich der Plattform nach einer Nachfrage bei onOffice fest, dass es den Kontakt dort nicht mehr gibt, dann räumt der nächste DB-Leads-Abgleich ihn ab. Beide Schritte haben eine Sicherheitsgrenze, über der gemeldet statt gelöscht wird; der Schritt steht im Verlauf des Laufs.</DefItem>
</DefinitionList>

<Callout tone="note" title="Skaliert auf 15.000+">
Der Import ist auf sehr große Adressbücher ausgelegt: Bulk-Schreiben statt Datensatz-für-Datensatz, ein Fortsetzungs-Cursor und ein Heartbeat, der einen im Hintergrund abgebrochenen Lauf erkennt und sauber beendet.
</Callout>

## Nach dem Sync: bewerten lassen

Ein Abgleich startet keinen Scan. Wer neue und geänderte Kontakte automatisch einschätzen lassen will, stellt unter **Einstellungen, Datenbank-Scan** den **Auto-Scan** ein: Jeder automatische Lauf gleicht vorher mit onOffice ab und bewertet danach. Ein von Hand gestarteter Scan unter Funde macht dasselbe: erst abgleichen, dann bewerten. Details beim [Akquise-Agent](/tools/db-leads/akquise-agent).

## Automatischer Lead-Import (optional)

Die Option **Allgemeine Einstellungen → Lead-Import** holt eingehende Portal-Anfragen automatisch in den Pool, erkannt an der Objektherkunft. Ehrlich gesagt: Das richtet sich an **neue Anfragen** und gehört konzeptionell zum geplanten Anfragen-Tool; fürs Eigentümer-Mining in der Bestandsdatenbank brauchst du sie nicht. Details unter [Einstellungen im Detail](/tools/db-leads/einstellungen).

## Häufige Fragen

<Faq>
  <FaqItem q="Woran erkenne ich Beispiel-Kontakte?">
    An dem Hinweis über jeder Ansicht: Er nennt die Zahl und sagt, dass es keine echten Kunden sind. Geladen werden sie nur, wenn du es im Einrichtungs-Assistenten ausdrücklich wählst, und entfernt entweder mit einem Klick oder automatisch beim ersten Abgleich gegen dein echtes onOffice.
  </FaqItem>
  <FaqItem q="Der Sync bleibt bei „läuft“ stehen. Was tun?">
    Große Läufe werden vom Hintergrund-Worker fortgesetzt. Wird ein Lauf unterbrochen, erkennt der nächste Sync den veralteten Lauf über den Heartbeat und schließt ihn ab. Ein erneuter Sync ist jederzeit gefahrlos möglich (idempotent).
  </FaqItem>
  <FaqItem q="Muss ich nach jedem Sync neu scannen?">
    Nicht zwingend, aber es lohnt sich: Der Datenbank-Scan analysiert dank Frische-Check nur Kontakte mit neuen Aktivitäten, und Folge-Scans sind darum schnell und günstig.
  </FaqItem>
</Faq>
