WHEN: impact analysis -- 'what breaks if I change X?', 'where is this used?', 'all usages of'. Triggers: 'qui utilise', 'impact de la modification', 'what uses', 'where is X referenced', 'before deleting', 'où est utilisé', 'impact of changing', 'all usages of', 'qui appelle ce champ', 'find all references to', 'tout ce qui utilise'. Full index scan (O(1M+ chunks)) -- EXPENSIVE. Only call when the user explicitly asks for usages/references/impact. When the XRef index is loaded, PREFER find_callers -- it is O(1) vs O(1M+) here and covers call chains, inheritance, and interface implementations. Use find_references only when find_callers is unavailable or for label IDs and field-level text scan. NEVER call just to identify or describe an object -- use get_object_details or search_d365_code for that. NEVER call for 'what is X', 'what does X do', 'explain X', 'show me X', 'what enum is X'. For label IDs (e.g. '@SYS124480' or '@SYS:124480'): automatically searches BOTH forms simultaneously -- the short form appears in X++ code, the colon form appears in metadata (Label: property). WORKFLOW for labels: (1) search_labels to get the label text, (2) find_references with the label ID to find all usages in forms/tables/classes/reports. NOT for extensions only -- use find_extensions for CoC/event handlers specifically.