> ## Documentation Index
> Fetch the complete documentation index at: https://human-resource-docs.ha-consultancy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Field Prefix Convention

> Every custom field, action, and object in this extension carries the HAC suffix — why, where it applies, and what to do when adding new objects.

Every field, action, control, and named object introduced by this extension carries the **`HAC`** suffix (short for *Hamwi Computer Software*).

## Why

Microsoft requires AppSource extensions to use a unique object-name suffix on every custom element so two extensions installed in the same tenant cannot accidentally pick the same identifier. `HAC` is the publisher's reserved suffix.

## Where it applies

| Element                                               | Example                                                                                                                                        |
| ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| Table                                                 | `Employee Loan HAC`                                                                                                                            |
| Field on a new table                                  | `Code HAC`, `Amount HAC`, `Employee HAC`                                                                                                       |
| Field added to a standard BC table via tableextension | `Branch HAC` on `Employee`, `Shift HAC` on `Employee Templ.`                                                                                   |
| Page                                                  | `Employee Loan HAC`                                                                                                                            |
| Codeunit                                              | `Install Codeunit HAC`, `HR Demo Data HAC`                                                                                                     |
| Enum                                                  | `Announcement Severity HAC`, `Announc. Target Audience HAC`                                                                                    |
| Permission set                                        | `Human Resource HAC`                                                                                                                           |
| Control add-in                                        | `Roster Scheduler HAC`                                                                                                                         |
| Web service service name                              | `APIManageEmployee` (the service name is exposed externally without the suffix to keep URLs readable; the underlying codeunit name carries it) |

## Where it does **not** apply

* Standard BC field names that the extension *uses* without modifying (e.g. `Employee."No."`).
* Captions shown to end users — captions are localised display strings and do not need to be unique.
* File names in `BC-Human-Resource-AL/src/` — these follow the BC tooling convention `Tab70003132.EmployeeLoan.al`.
* React component names, ASP.NET class names — these live outside BC's object namespace.

## Adding new objects

When extending this codebase:

1. Pick the next available object ID in the right sub-range (see [Object-ID allocation](/reference/object-id-allocation)).
2. Append `HAC` to the object name and to every field name.
3. Add the new object to `PermissionSet.HumanResourceHAC.al` (and to `extensionsPermissionSet.xml` for AppSource).
4. If the new field is on a tableextension, use a field number in the publisher's reserved range (e.g. `70003100` upwards on the Employee table).

<Note>A linter / CI rule on the AL build will eventually surface objects missing the suffix; until then, code review is the safety net.</Note>
