How to fix it

  1. First, verify what value is actually stored by logging gr.fieldName.toString() or gr.getValue('fieldName') to see the raw stored value.
  2. If it's a choice field, navigate to System Definition > Choice and filter: Table = your table name, Element = your field name, Value = the stored value.
  3. If no choice record exists, create one by clicking New and filling: Table, Element, Value (exact match to stored value), and Label (what you want displayed).
  4. If choice exists but has blank Label field, edit the record and populate the Label field with the desired display text.
  5. For reference fields, copy the stored sys_id and navigate directly to the referenced table (e.g., if it's a user reference, go to sys_user.list and search by sys_id).
  6. If the referenced record doesn't exist, either restore it from the recycle bin (System Administration > Recycle Bin) or clear the reference field value.
  7. If record exists but display field is empty, identify the display field by going to System Definition > Dictionary, filter by the target table, and find the field with Display = true.
  8. Either populate the display field on the target record or change the display field to a field that has values (edit the dictionary entry and move the Display checkbox).
  9. For business rules on new records, ensure you're in after timing and the record has been saved, or use current.field_name.getDisplayValue() instead of a separate GlideRecord query.
  10. If using a separate GlideRecord in your business rule, always call gr.get(sys_id) or gr.query(); gr.next() before accessing field values.
💡

Test your fix by running gs.info(gr.fieldName.getDisplayValue()) in a background script to verify the display value appears correctly before redeploying your business rule.