hcengineering/platform · error
Person not found: ${name}
Error message
Person not found: ${name} What it means
findPersonByName resolves a person name from imported content (e.g. an issue's author or assignee field) against the in-memory map of persons loaded from the target workspace. If the name is not present in that map, it throws rather than returning a dangling reference. Undefined names are tolerated and return undefined; only an actual, unresolvable name throws.
Source
Thrown at packages/importer/src/huly/huly.ts:523
// Process sub-issues if they exist
const subDir = path.join(currentPath, issueFile.replace('.md', ''))
if (fs.existsSync(subDir) && fs.statSync(subDir).isDirectory()) {
await this.processIssuesRecursively(builder, projectIdentifier, projectPath, subDir, issuePath)
}
} else {
throw new Error(`Unknown issue class ${issueHeader.class} in ${issueFile}`)
}
}
}
private findPersonByName (name?: string): Ref<Person> | undefined {
if (name === undefined) {
return undefined
}
const person = this.personsByName.get(name)
if (person === undefined) {
throw new Error(`Person not found: ${name}`)
}
return person
}
private async getPersonIdByEmail (email: string): Promise<PersonId> {
const personId = this.personIdByEmail.get(email)
if (personId !== undefined) {
return personId
}
const socialId = await this.client.findOne(contact.class.SocialIdentity, {
type: SocialIdType.EMAIL,
value: email
})
if (socialId === undefined) {
throw new Error(`Social ID not found for email: ${email}`)
}View on GitHub (pinned to 63e28dc964)
Solutions
- Ensure the named person exists in the target Huly workspace (create/invite the user) with exactly the same display name
- Fix the name in the source markdown front-matter to match an existing person exactly (case and spacing)
- Re-export after user accounts are corrected in the source workspace
- Replace references to departed users with an existing account name
Example fix
// before (issue front-matter) assignee: John Doe // after (matching an existing person exactly) assignee: John M. Doe
Defensive patterns
Strategy: try-catch
Validate before calling
// pre-check names referenced in issue front-matter against workspace persons
for (const name of referencedPersonNames(issueFiles)) {
if (!workspacePersonNames.has(name)) console.warn(`Person "${name}" missing in target workspace`)
} Try / catch
try {
await importer.workspaceData(folder)
} catch (e) {
if (e instanceof Error && e.message.startsWith('Person not found:')) {
const name = e.message.slice('Person not found:'.length).trim()
console.error(`Create or rename a user to "${name}" in the target workspace, then retry`)
} else throw e
} Prevention
- Import into a workspace that contains all users referenced by the export, with identical display names
- Normalize names (trim whitespace, consistent casing) in exported front-matter
- Re-export after user renames so names stay in sync
- Audit assignee/author fields against the target workspace's user list before importing
When it happens
Trigger: An imported issue/comment header references a person by name (called from issue processing) that does not exist among persons registered in the importer's personsByName map — e.g. the user left the workspace, was renamed, or the name has different spelling/casing/whitespace.
Common situations: Export from workspace A imported into workspace B where the named user does not exist; a user renamed their account between export and import; extra spaces or different casing in the name field of the markdown front-matter; deactivated or removed accounts.
Related errors
- Unsupported card type: ${cardType} in ${cardPath}
- Invalid master tag data
- Invalid tag data
- Unsupported type: ${property.type} ${currentPath}
- Blob file not found: ${blobPath} from:${cardPath}
AI-assisted analysis of hcengineering/platform@63e28dc964 (2026-08-29).
Data as JSON: /api/errors/c35d04d5403b8dad.
Report an issue: GitHub.