owasp-amass/amass · warning

failed to obtain the Organization associated with Identifier

Error message

failed to obtain the Organization associated with Identifier - %s:%s

What it means

FindOrgByRDAPHandle also returns this error when, after locating the entity for the ARIN handle, no associated Organization matches the handle. The function walks incoming edges and org candidates looking for an Organization whose RDAP handle matches; if the loop exhausts without a match it falls through to this sentinel error. Like [201], it is a not-found signal at the organization-resolution stage.

Source

Thrown at engine/plugins/support/org/rdap.go:75

	if err != nil || len(ids) != 1 {
		return nil, fmt.Errorf("failed to obtain the entity for Identifier - %s:%s", oamgen.ARINHandle, handle)
	}
	ident := ids[0]

	if edges, err := sess.DB().IncomingEdges(ctx, ident, time.Time{}, "id"); err == nil && len(edges) > 0 {
		for _, edge := range edges {
			if tags, err := sess.DB().FindEdgeTags(ctx, edge, time.Time{}, src.Name); err != nil || len(tags) == 0 {
				continue
			}
			if o, err := sess.DB().FindEntityById(ctx, edge.FromEntity.ID); err == nil && o != nil {
				if _, valid := o.Asset.(*oamorg.Organization); valid {
					return o, nil
				}
			}
		}
	}

	return nil, fmt.Errorf("failed to obtain the Organization associated with Identifier - %s:%s", oamgen.ARINHandle, handle)
}

View on GitHub (pinned to 79299dce87)

Solutions

  1. Ensure the organization enumeration stage that links orgs to ARIN handles has completed
  2. Compare the stored org handle values against the requested handle for formatting differences
  3. Verify incoming edges of type 'id' exist for the handle entity in the DB
  4. Re-run the RDAP source to refresh entity/org links, then retry the lookup
  5. Treat as expected not-found for unknown handles and skip rather than failing the scan

Example fix

// before
org, err := FindOrgByRDAPHandle(ctx, sess, e, oam, handle)
if err != nil {
    return fmt.Errorf("store failed: %v", err)
}
// after
org, err := FindOrgByRDAPHandle(ctx, sess, e, oam, handle)
if err != nil {
    if strings.Contains(err.Error(), "failed to obtain the Organization") {
        return nil // org not yet linked; defer to full RDAP lookup
    }
    return fmt.Errorf("store failed: %v", err)
}
Defensive patterns

Strategy: fallback

Validate before calling

// Go: verify the handle entity has an org edge before resolving
edges, err := sess.DB().IncomingEdges(ctx, ident, time.Time{}, "id")
if err != nil || len(edges) == 0 {
    return nil, fmt.Errorf("handle %s has no org links yet; rerun RDAP source", handle)
}

Type guard

func isOrgResolutionFailure(err error) bool {
    return err != nil && strings.Contains(err.Error(), "failed to obtain the Organization associated with Identifier")
}

Try / catch

org, err := FindOrgByRDAPHandle(ctx, sess, e, oam, handle)
if err != nil {
    if isOrgResolutionFailure(err) {
        org = fallbackRDAPLookup(ctx, handle) // fall back to live RDAP query
    } else {
        return nil, err
    }
}

Prevention

When it happens

Trigger: Calling FindOrgByRDAPHandle (via storeEntity) when the handle entity exists but: no Organization entity is linked via the checked incoming edges, none of the candidate orgs' handle fields equal the requested handle, or edge/tag queries all fail so no candidate is accepted.

Common situations: The org-to-handle relationship was never created (organization enumeration incomplete); handle format changed between ARIN responses (e.g. contact handle reuse or refresh); org data stored under a different identifier than the one queried; race where entity was stored but org linking edges were not yet written.

Understand the failure class

Background: "Not found" and "does not exist" errors: why "Task not found", "No such folder", and "Can't find" fire when a lookup comes back empty — this error's family across 14 libraries.

Related errors


AI-assisted analysis of owasp-amass/amass@79299dce87 (2026-09-06). Data as JSON: /api/errors/2d93b05af6138f1c. Report an issue: GitHub.