Custom fields in contract management data model not searchable via API

We’ve added several custom fields to our contract records in Adobe Experience Cloud for compliance tracking (renewal_notice_date, regulatory_category, audit_status), but they’re not returning results when queried through the API.

Here’s our API query attempt:

{
  "query": "regulatory_category:FDA",
  "fields": ["contract_id", "regulatory_category"]
}

The API returns empty results even though we can see contracts with regulatory_category=FDA in the UI. Standard fields like contract_number and status work fine in searches. We need these custom fields searchable for our automated compliance reporting that runs nightly via API integration.

Our contract-mgmt module is on AEC 2022. Is there an indexing step we’re missing for custom field searchability? The documentation mentions search index configuration but doesn’t provide clear guidance on custom field support.

There’s a known limitation in AEC 2022 where custom fields added after initial schema deployment don’t automatically get picked up by the API query engine. You need to update the API schema definition file and redeploy. This is separate from the UI schema. The disconnect between UI and API field availability has caught many teams off guard.

You’re hitting three separate issues that need to be addressed for full custom field API searchability:

1. Custom Field Indexing: Your custom fields need explicit index configuration. Navigate to Admin > Data Modeling > Contract Schema and update each custom field:

{
  "fieldName": "regulatory_category",
  "indexed": true,
  "indexType": "keyword"
}

Set indexType based on field purpose:

  • “keyword” for exact-match categorical fields (regulatory_category, audit_status)
  • “text” for fields needing partial matching (notes, descriptions)
  • “date” for date fields (renewal_notice_date)

2. API Query Parameter Support: Your query syntax is incorrect for custom fields. AEC 2022 requires the customFieldFilters parameter:

{
  "customFieldFilters": [
    {
      "field": "regulatory_category",
      "operator": "equals",
      "value": "FDA"
    }
  ],
  "fields": ["contract_id", "custom.regulatory_category"]
}

Note the “custom.” prefix in the fields array - this is required to retrieve custom field values in API responses.

3. Search Index Rebuild: After updating field configurations, trigger a manual index rebuild:

Access the AEC Admin Console > System > Search Index Management

  • Select “Contract Management” module
  • Choose “Rebuild Custom Field Index”
  • Monitor progress in the job queue

For large datasets (>100K contracts), this can take 4-6 hours. The rebuild is necessary because existing records weren’t indexed for these fields when they were first created.

Additional Configuration Steps:

  1. Verify API user permissions include “custom_field_api_access” role
  2. Update your API integration to use the correct endpoint version (v2.1+ supports custom field filtering)
  3. Add custom fields to your API response schema mapping
  4. Test with a small dataset first using the sandbox environment

Query Examples After Configuration:

Single field filter:

{
  "customFieldFilters": [{"field": "audit_status", "operator": "equals", "value": "pending"}]
}

Multiple field filter with date range:

{
  "customFieldFilters": [
    {"field": "regulatory_category", "operator": "equals", "value": "FDA"},
    {"field": "renewal_notice_date", "operator": "between", "value": ["2025-01-01", "2025-12-31"]}
  ]
}

After implementing these changes, your nightly compliance reporting should successfully query custom fields. The key issue is that AEC separates UI and API search capabilities, requiring explicit configuration for API access to custom fields.

Your query syntax might also be the issue. Custom fields in AEC 2022 require a different parameter format in API requests. Instead of using them directly in the query string, you need to use the customFields filter array. Also verify that your API user has the correct permissions to access custom field data - there’s a separate permission set for custom field API access that’s distinct from UI access.