keith.jenneke
08/03/2026, 11:10 AMkapa.ai
08/03/2026, 11:10 AMcreatedBy and modifiedBy references are validated against users that actually exist in the target organization. If the layout contains references to users from a different organization (e.g., from your trial environment), the request fails with the 400 error you're seeing. [Workspace declarative API]
Recommended Fix The cleanest solution is to exclude author/editor metadata when exporting, using the exclude=ACTIVITY_INFO parameter. This prevents invalid user references from being included in the payload. [Extended Metadata]
Step 1 – Export the workspace layout without author metadata:
curl -H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
-X GET \
$HOST_URL/api/v1/layout/workspaces/{workspace-id}?exclude=ACTIVITY_INFO \
> workspace-backup-without-authors.json
Step 2 – PUT the cleaned layout into the target workspace:
curl -H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-X PUT \
-d @workspace-backup-without-authors.json \
$HOST_URL/api/v1/layout/workspaces/{workspace-id}
When reimported this way: [Extended Metadata]
• createdAt will reflect the upload time.
• createdBy will be set to the user performing the PUT request.
If You Already Have a Backup File With Stale References If you're working from an older backup file (not a fresh export), you have two options:
1. Re-export fresh from the source using exclude=ACTIVITY_INFO as above.
2. Manually edit the backup JSON to remove or replace all createdBy and modifiedBy fields that reference users/organizations not present in the production environment. [Object authors and editors]
Important Reminder for Cross-Organization Migration Workspace layouts are not directly portable between organizations without manual changes. Beyond user references, also ensure: [Importing a Workspace]
• All dataSourceId values reference data sources that exist in the production organization.
• The target workspace already exists before running the PUT. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups.
👀 Our Support team monitors all messages and will jump in if needed.keith.jenneke
08/03/2026, 11:27 AMcreatedAt and createdBy references and still get the same errorkapa.ai
08/03/2026, 11:27 AMmodifiedBy references are validated in the same way as createdBy. It's worth checking whether your backup JSON still contains modifiedBy (and corresponding modifiedAt) fields referencing users from the trial/source organization — these would trigger the same 400 error.
Make sure you've removed all four author/editor fields:
• createdBy
• createdAt
• modifiedBy
• modifiedAt
The safest approach is to re-export using the exclude=ACTIVITY_INFO parameter, which strips all of these fields in one go rather than removing them manually: [Extended Metadata]
curl -H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
-X GET \
$HOST_URL/api/v1/layout/workspaces/{workspace-id}?exclude=ACTIVITY_INFO \
> workspace-backup-without-authors.json
If you cannot re-export from the source and must work from the existing backup file, I'd recommend doing a global search across the entire JSON for any remaining user identifier patterns (e.g., "type": "user") to catch any stale references you may have missed.
Beyond that, the knowledge sources do not contain enough information to diagnose further causes of this specific error. If the problem persists after removing all author/editor metadata, I'd recommend opening a support ticket with GoodData, sharing the workspace ID and the exact payload you're PUT-ing so their team can investigate further. [Community thread] 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups.
👀 Our Support team monitors all messages and will jump in if needed.Shamil Akhmadyshev
08/03/2026, 11:33 AMkeith.jenneke
08/03/2026, 11:36 AMShamil Akhmadyshev
08/03/2026, 11:48 AMkeith.jenneke
08/03/2026, 11:50 AMShamil Akhmadyshev
08/03/2026, 11:50 AMkeith.jenneke
08/04/2026, 1:42 AMkapa.ai
08/04/2026, 1:42 AMoauthClientSecret field is missing or invalid in the target environment, users will not be able to log in. [Migrate to Another Environment]
Additionally, after environment migrations or authentication configuration changes, users can end up with a missing or broken authId — their account exists in GoodData but is not properly connected to the authentication layer, causing:
• "Invalid username or password" errors
• No password reset emails being delivered
Recommended Steps 1. Check the migrated organization layout — Verify that the oauthClientSecret for your IdP was provided in the JSON before the PUT request. If it was left blank or used a placeholder, authentication will not work until it is configured. [Migrate to Another Environment]
2. Contact GoodData Support and provide:
◦ Both hostnames (trial and production environments)
◦ Affected users' email addresses
◦ A description of the migration you performed and the symptoms (login failure on both environments)
◦ Ask them specifically to:
▪︎ Verify the OIDC/IdP configuration is correct in both environments
▪︎ Check whether affected users have valid authId values and fix any that are missing or mismatched
1. After Support confirms the fix, have affected users go to the login page, click "Forgot Password?", and use the reset link to set a new password.
> Important: There is no self-service way to repair missing authId values or broken OIDC configuration — these require GoodData Support to resolve on the backend. [Community thread] 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups.
👀 Our Support team monitors all messages and will jump in if needed.