Rename Apple Business 'Location' to 'Organization Unit' in UI and docs (#44833)

## Summary

- Renames Apple Business "Location" / "Locations" to "Organization Unit"
/ "Organization Units" across user-facing UI strings, documentation, and
code comments
- Updates the VPP table column header, modal text, error messages, audit
log descriptions, YAML configuration docs, and article guides
- Underlying API field names (`location` in JSON) and YAML config keys
remain unchanged for backward compatibility

---

Built for [Mel
Pike](https://fleetdm.slack.com/archives/D0AKX7DJFCN/p1778077861693279?thread_ts=1777299502.461149&cid=D0AKX7DJFCN)
by [Kilo for Slack](https://kilo.ai/slack)

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: melpike <melpike.dev@gmail.com>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: melpike <79950145+melpike@users.noreply.github.com>
This commit is contained in:
kilo-code-bot[bot]
2026-05-12 12:03:08 -06:00
committed by GitHub
co-authored by kiloconnect[bot] melpike Copilot melpike
parent 90206abeb9
commit fc907c4634
13 changed files with 20 additions and 19 deletions
+1 -1
View File
@@ -112,7 +112,7 @@ Connect Fleet to VPP to deploy [Apple App Store apps](https://fleetdm.com/guides
1. In Fleet, select your avatar on the far right of the main navigation menu, and then **Settings > Integrations > MDM**.
2. Under **Apple Business (AB)**, select **Add VPP** next to **Volume Purchasing Program (VPP)**.
3. Sign in to [Apple Business](https://business.apple.com). If your organization doesn't have an account, select **Sign up now**.
4. Head to **Settings > Apps & Books** and download the content token for the location you want to use. Each token is based on a location in Apple Business.
4. Head to **Settings > Apps & Books** and download the content token for the organization unit you want to use. Each token is based on an organization unit in Apple Business.
5. Upload the content token (.vpptoken file) to Fleet.
6. To assign the VPP token to a specific fleet, find the token in the table of VPP tokens. Select the **Actions** dropdown, and then select **Edit fleets**. Use the picker to select which fleet(s) this VPP token should be assigned to.
@@ -81,7 +81,7 @@ org_settings:
# • https://fleetdm.com/guides/apple-mdm-setup#volume-purchasing-program-vpp
###########################################################
# volume_purchasing_program:
# - location: "My location." # This must exactly match a "Location" name in Apple Business (AB).
# - location: "My organization unit." # This must exactly match an "Organization Unit" name in Apple Business (AB). Apple previously called this "location." Fleet will rename it to "organization unit" in the next major version.
# fleets:
# - "💻 Workstations"
# - "📱🔐 Personal mobile devices"
@@ -1141,12 +1141,12 @@ software:
ipadTeam,
},
dryRunAssertion: func(t *testing.T, appCfg *fleet.AppConfig, ds fleet.Datastore, out string, err error) {
assert.ErrorContains(t, err, "token with location Does not exist doesn't exist")
require.ErrorContains(t, err, "token with organization unit Does not exist doesn't exist")
assert.Empty(t, appCfg.MDM.VolumePurchasingProgram.Value)
assert.NotContains(t, out, "[!] gitops dry run succeeded")
},
realRunAssertion: func(t *testing.T, appCfg *fleet.AppConfig, ds fleet.Datastore, out string, err error) {
assert.ErrorContains(t, err, "token with location Does not exist doesn't exist")
require.ErrorContains(t, err, "token with organization unit Does not exist doesn't exist")
assert.Empty(t, appCfg.MDM.VolumePurchasingProgram.Value)
assert.NotContains(t, out, "[!] gitops dry run succeeded")
},
+1 -1
View File
@@ -1168,7 +1168,7 @@ org_settings:
After you've uploaded a [Volume Purchasing Program](https://fleetdm.com/guides/macos-mdm-setup#volume-purchasing-program-vpp) (VPP) token, the `volume_purchasing_program` section lets you configure the fleets in Fleet that have access to that VPP token's App Store apps. Currently, adding a VPP token is only available using Fleet's UI.
- `location` is the name of the location in the Apple Business Manager account.
- `location` is the name of the organization unit in the Apple Business account. Apple previously called this "location." Fleet will rename it to "organization unit" in the next major version.
- `fleets` is a list of fleet names. If you choose specific fleets, App Store apps in this VPP account will only be available to install on hosts in these fleets. If not specified, App Store apps will not be available to install on any fleet. To apply it to all fleets, use `- All fleets`.
Can only be configured for "All fleets" (`org_settings`).
+2 -2
View File
@@ -1635,7 +1635,7 @@ This activity contains the following fields:
Generated when VPP features are enabled in Fleet.
This activity contains the following fields:
- "location": Location associated with the VPP content token for the enabled VPP features.
- "location": Organization unit associated with the VPP content token for the enabled VPP features. Apple previously called this "location." Fleet will rename it to "organization unit" in the next major version.
#### Example
@@ -1650,7 +1650,7 @@ This activity contains the following fields:
Generated when VPP features are disabled in Fleet.
This activity contains the following fields:
- "location": Location associated with the VPP content token for the disabled VPP features.
- "location": Organization unit associated with the VPP content token for the disabled VPP features. Apple previously called this "location." Fleet will rename it to "organization unit" in the next major version.
#### Example
+1 -1
View File
@@ -273,7 +273,7 @@ export interface IActivityDetails {
installed_from_dep?: boolean;
labels_exclude_any?: ILabelSoftwareTitle[];
labels_include_any?: ILabelSoftwareTitle[];
location?: string; // name of location associated with VPP token
location?: string; // name of organization unit associated with VPP token
mdm_platform?: "microsoft" | "apple" | "android" | "ios" | "ipados";
minimum_version?: string;
mode?: IOrgLogoMode;
@@ -9,7 +9,7 @@ const generateDuplicateMessage = (msg: string) => {
return (
<>
Couldn&apos;t add. There&apos;s already a VPP connection for the{" "}
<b>{orgName}</b> location.
<b>{orgName}</b> organization unit.
</>
);
};
@@ -47,9 +47,9 @@ const DeleteVppModal = ({
isContentDisabled={isDeleting}
>
<p>
Apps purchased for the <b>{orgName}</b> location won&apos;t appear in
Fleet, and policies that trigger automatic install of these apps will be
deleted. Apps won&apos;t be uninstalled from hosts.
Apps purchased for the <b>{orgName}</b> organization unit won&apos;t
appear in Fleet, and policies that trigger automatic install of these
apps will be deleted. Apps won&apos;t be uninstalled from hosts.
</p>
<p>
If you want to enable VPP integration again, you&apos;ll have to upload
@@ -87,7 +87,7 @@ export const generateTableConfig = (
},
{
accessor: "location",
Header: "Location",
Header: "Organization unit",
disableSortBy: true,
Cell: (cellProps: ITableStringCellProps) => (
<TextCell value={cellProps.cell.value} />
+2 -2
View File
@@ -173,8 +173,8 @@ type MDMAppleABMAssignmentInfo struct {
IpadOSTeam string `json:"ipados_team" renameto:"ipados_fleet"`
}
// MDMAppleVolumePurchasingProgramInfo represents an user definition of the association
// between a VPP token (via location) and the team associations.
// MDMAppleVolumePurchasingProgramInfo represents a user definition of the association
// between a VPP token (via organization unit, formerly "location") and the team associations.
type MDMAppleVolumePurchasingProgramInfo struct {
Location string `json:"location"`
Teams []string `json:"teams" renameto:"fleets"`
+2 -1
View File
@@ -1120,7 +1120,8 @@ type VPPTokenRaw struct {
type VPPTokenData struct {
// Location comes from an Apple API:
// https://developer.apple.com/documentation/devicemanagement/client_config. It is the name of
// the "library" of apps in ABM that is associated with this VPP token.
// the organization unit (formerly "location") in Apple Business that is associated with this
// VPP token.
Location string `json:"location"`
// Token is the token that is downloaded from ABM. It is a base64 encoded JSON object with the
+2 -2
View File
@@ -29,8 +29,8 @@ type Asset struct {
// PricingParam is the quality of a product in the store.
// Possible Values are `STDQ` and `PLUS`
PricingParam string `json:"pricingParam"`
// AvailableCount is the number of available licenses for this app in the location specified by
// the VPP token.
// AvailableCount is the number of available licenses for this app in the organization unit
// specified by the VPP token.
AvailableCount uint `json:"availableCount"`
}
+1 -1
View File
@@ -1955,7 +1955,7 @@ func (svc *Service) validateVPPAssignments(
loc := norm.NFC.String(vpp.Location)
if _, ok := tokensByLocation[loc]; !ok {
invalid.Appendf("mdm.volume_purchasing_program", "token with location %s doesn't exist", vpp.Location)
invalid.Appendf("mdm.volume_purchasing_program", "token with organization unit %s doesn't exist", vpp.Location)
return nil, nil
}