# onOffice sync: troubleshooting

<Lead>
The most common onOffice sync problems, each with cause and fix. If none of
these helps, contact support with the name of the affected object or contact.
</Lead>

## Only about 100 objects are imported

<Note title="Cause">
An earlier first-import filter created only "active" objects; the rest stayed
"skipped". The filter is removed: the entire inventory is now imported.
</Note>

<Checklist>
<ChecklistItem>Restart the sync once ("Sync now").</ChecklistItem>
<ChecklistItem>In onOffice, disable "only published objects" for the API user.</ChecklistItem>
<ChecklistItem>Check that the API user may read objects (all).</ChecklistItem>
</Checklist>

## All objects show "active"

<Note title="Cause">
The status was set to "active" as a fallback on insert when no status mapping
resolved. The status is now derived from sold / reserved / the active flag.
</Note>

<Checklist>
<ChecklistItem>Open and save the field mapping once (releases skipped fields such as Status2).</ChecklistItem>
<ChecklistItem>Click "Sync now"; already imported objects are corrected.</ChecklistItem>
<ChecklistItem>For finer stages, map your own status value list (see the <DocLink href="/help/integrations/onoffice/status">status guide</DocLink>).</ChecklistItem>
</Checklist>

## "onOffice rejected the credentials"

<Checklist>
<ChecklistItem>Check token and secret. onOffice shows the secret only once; regenerate if in doubt.</ChecklistItem>
<ChecklistItem>Check whether the API user is active in onOffice.</ChecklistItem>
<ChecklistItem>Store new credentials via "Replace" and click "Connect & test".</ChecklistItem>
</Checklist>

## No or too few objects visible

<Checklist>
<ChecklistItem>Disable "only published objects" for the API user.</ChecklistItem>
<ChecklistItem>Check object rights (all).</ChecklistItem>
<ChecklistItem>Check the status filter in the object gallery: sold and archived objects may be hidden.</ChecklistItem>
</Checklist>

## A mapped field stays empty

<Note title="Cause">
If onOffice cannot deliver a field via the API, the sync skips it so the whole
run does not fail.
</Note>

<Checklist>
<ChecklistItem>Save the field mapping once more (releases skipped fields).</ChecklistItem>
<ChecklistItem>Check the exact field name (case-sensitive, as in onOffice).</ChecklistItem>
<ChecklistItem>Check whether the API user may read the field.</ChecklistItem>
</Checklist>

## The sync appears stuck

<Note title="How the sync works">
Large inventories are processed in stages: the first run fetches as much as
possible immediately, the rest continues in the background and reports back with
a notification when done. A stuck run (no progress for a while) is closed
automatically and can be restarted.
</Note>

<Checklist>
<ChecklistItem>Reload the page and check the run status.</ChecklistItem>
<ChecklistItem>If needed, "Cancel" and then "Sync now" again.</ChecklistItem>
</Checklist>

## Objects show no photos

<Note title="Cause">
Photos are fetched in a separate background step after the object sync. With many
objects this takes a few minutes.
</Note>

<Checklist>
<ChecklistItem>Wait a few minutes and reload the object gallery.</ChecklistItem>
<ChecklistItem>Check that the API user may read objects (all) (photos depend on the object read right).</ChecklistItem>
<ChecklistItem>Objects with no photo in onOffice keep the placeholder. A repeated sync fetches missing photos.</ChecklistItem>
</Checklist>

## "Secure storage not configured"

The environment has no encryption key for credentials yet. In that case contact
support; without this key credentials cannot be stored.

## Next

<CardGrid>
<Card href="/help/integrations/onoffice/objekte" title="Object sync" eyebrow="Basics">
The full object sync workflow.
</Card>
<Card href="/help/integrations/onoffice/status" title="Detect status" eyebrow="Deep dive">
How the object status is determined.
</Card>
</CardGrid>
