Troubleshooting: Dormakaba Oracode Access Code Issues
Last updated: December 11, 2025
If you're having trouble creating or managing access codes for Dormakaba Oracode locks, this guide covers the most common issues and how to resolve them.
Error: "Invalid Time Range"
Error code: dormakaba_oracode_invalid_time_range
What This Means
Your requested access code time doesn't match any predefined user level time slot configured in your Dormakaba Oracode system.
How to Check
View your device's available time slots:
device.properties.dormakaba_oracode_metadata.predefined_time_slots
Common Causes
Your time range doesn't match any available slot
Timezone mismatch - Even if using the correct time slot times, they must be in the device's timezone
How to Fix
Option 1: Adjust Your Time Range
Modify your start/end times to match an available time slot
Option 2: Add a New User Level (Not Recommended)
⚠ Warning: Adding a new user level requires re-programming all your locks, which is a time-consuming process. Only pursue this option if you frequently need access codes outside your existing time slots.
Follow our guide: Dormakaba Oracode Time Slot Configuration
Once the new user level is configured, you'll need to physically re-program each lock
The new time slot will then appear in
predefined_time_slots
Recommendation: Use Option 1 whenever possible to avoid the overhead of re-programming your locks.
Account-Level Issues Blocking All Codes
Sometimes problems at the account level prevent creating codes on any device.
Check Account Errors
dormakaba_sites_disconnected (in third_party_account.error_map)
One or more Dormakaba sites have lost connection
Prevents code creation on all affected devices
Requires reconnecting the sites in Dormakaba
Check Account Warnings
dormakaba_sites_unapproved (in third_party_account.warning_map)
Sites need approval on Seam's side
May prevent code creation until approved
Contact support@seam.co to resolve this issue
How to Check
Retrieve your connected account and check for errors/warnings:
// Using Seam SDK
const account = await seam.connectedAccounts.get({
connected_account_id: "your_account_id"
});
// Check account.error_map and account.warning_map
Or view the JSON resource:
{
"connected_account_id": "xxx",
"error_map": {
"dormakaba_sites_disconnected": "One or more sites are disconnected"
},
"warning_map": {
"dormakaba_sites_unapproved": "Sites pending approval"
}
}
Understanding Warning vs Error States
Access codes can be in warning or error states with different meanings:
Warning State: delay_in_setting_on_device
System is still trying to set the code
This is temporary - wait for sync to complete
Code will eventually succeed or fail
Error State: failed_to_set_on_device
System has given up trying to set the code
Time threshold exceeded
Code will not work - needs to be recreated
Dormakaba Oracode Limitations
Be aware of these system limitations when creating access codes:
Cannot Customize Codes
Oracode generates the code value automatically
You cannot specify a custom PIN
Codes include spaces (e.g., "6 * 901028")
One-Time-Use Not Supported
All codes can be used multiple times during their validity period
Single-use codes are not available
Maximum Duration: 31 Days
Access codes cannot be valid for more than 31 days
For longer access, create sequential codes or use permanent solutions
Offline Access Codes Cannot Be Deleted
Once an offline access code is created, it cannot be removed
The code will remain valid until its expiration time
Plan offline access code timing carefully before creation
Advanced Debugging
Check Access Code Status
Using Seam SDK:
const accessCode = await seam.accessCodes.get({
access_code_id: "your_access_code_id"
});
// Check these fields:
// - accessCode.code
// - accessCode.starts_at / ends_at
// - accessCode.is_set_on_device
// - accessCode.status
// - accessCode.errors
// - accessCode.warnings
Example JSON resource:
{
"access_code_id": "xxx",
"code": "6 * 901028",
"starts_at": "2025-12-15T14:00:00Z",
"ends_at": "2025-12-16T10:00:00Z",
"is_set_on_device": true,
"status": "set",
"errors": [],
"warnings": []
}
View Available Time Slots
Using Seam SDK:
const device = await seam.devices.get({
device_id: "your_device_id"
});
// Check predefined time slots:
// device.properties.dormakaba_oracode_metadata.predefined_time_slots
Example JSON resource:
json{
"device_id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"properties": {
"dormakaba_oracode_metadata": {
"iana_timezone": "America/Los_Angeles",
"predefined_time_slots": [
{
"name": "Guest 3:30pm-10:30am",
"prefix": 0,
"is_24_hour": true,
"check_in_time": "15:30:00[America/Los_Angeles]",
"check_out_time": "10:30:00[America/Los_Angeles]",
"dormakaba_oracode_user_level_id": "7f3a4807-c111-483d-a9cd-a2b813865fe4"
}
]
}
}
}
Still Having Issues?
If you've checked the items above and still need help:
Contact support with:
Your device ID
The access code ID (if applicable)
The specific error or warning message
The time range you're trying to use
Results from the debug queries above
Our team can investigate device-specific configuration issues and sync problems.