Installing the Harmony App on MDM
Deploy the Harmony app to managed Windows, macOS and iOS devices automatically using Intune, Jamf Pro, JumpCloud, Workspace ONE, Ivanti or Kandji.
Harmony is available as an installable app, so your employees can open it from the Start menu or the Dock instead of finding a browser tab. If your organization manages devices with an MDM, you can install it on every device automatically, with no installer to package, no administrator rights, and nothing for your users to do.
This guide explains how the deployment works, what to check before you start, and the exact steps for the most common MDM platforms.
How it works
Your MDM does not install the app itself. It delivers a single browser policy called WebAppInstallForceList to the device, and Chrome or Edge installs the Harmony app the next time it starts. Because the browser is already running in the user's session, nothing needs elevation and nothing interrupts them.
Two things follow from this. The policy value is identical on every platform, so the only real difference between MDM platforms is how you deliver it. And because the browser performs the install, your Harmony address must be reachable from the device at that moment.
Supported Platforms
Windows 10 and 11
Browser policy, through Chrome or Edge
Yes
macOS
Browser policy, through a configuration profile
Yes
iPhone and iPad
Managed Web Clip
Icon only, see below
Linux
Browser policy, through a managed policy file
Yes
Choose your platform
Read the two short sections below, then jump straight to your own MDM.
Microsoft Intune
Jamf Pro
JumpCloud
Workspace ONE UEM
Ivanti Neurons for UEM
Kandji
Something else
iPhone or iPad
What you need before you start
Find your Harmony address. In Harmony, go to Settings and open General. The Domain field shows your address, in the form
yourcompany.harmony.io. Every example below usesyourcompany, so replace it with your own.Confirm the app is installable. Open
https://yourcompany.harmony.io/in Microsoft Edge on a test machine and check that the Install icon appears in the address bar. If you cannot install it by hand, no policy will install it either.Allow Harmony through your proxy and SSL inspection. Allowing
*.harmony.iocovers the application, its API and its realtime endpoint.Check that your target users have Harmony accounts. The app opens to your organization's sign-in on first launch. Pushing it to a group without Harmony access gives those users an icon that leads to a login wall.
If https://yourcompany.harmony.io/ does not load at all, the DNS record for your address may not be provisioned yet. Contact Harmony support before you build any policy.
What lands on the device
Appears as
Harmony, in the Start menu, search and Launchpad
Window
Standalone, with no address bar and its own taskbar entry
Opens at
Your Harmony workspace root
The app updates itself from the web, so there is nothing for your MDM to maintain after the initial deployment. Harmony asks the user before applying a new version rather than reloading underneath them, so users occasionally see an update prompt in the app window. This is deliberate, to avoid losing a half-written ticket.
Understanding the policy value
Every platform below uses the same setting, WebAppInstallForceList, but the format differs by operating system. Pick your platform:
A JSON array, written as a single string value.
A property list array of dictionaries, not a JSON string.
A JSON file, with the setting name as a key.
Whichever format you use, the fields mean the same thing.
url
Required. Your Harmony address, including the trailing slash.
default_launch_container
window opens Harmony standalone, with no address bar and its own taskbar button. tab opens it as an ordinary browser tab.
create_desktop_shortcut
Adds a desktop icon. A Start menu entry is created either way. Ignored on macOS, where the app goes to the Applications folder.
fallback_app_name
The name used if Harmony cannot be reached at install time, for example on a laptop that first starts up off the network. Prevents a raw URL appearing in the Start menu.
Write this value in a plain text editor. Curly quotes from a word processor or a rich text ticket field are the most common reason a policy is silently rejected.
Configuring Microsoft Intune
Microsoft Edge policies ship with Intune, so Edge is the shortest path. Google Chrome requires importing Google's policy templates first.
Microsoft Edge
Sign in to
intune.microsoft.comas Intune Administrator or Policy and Profile Manager.Go to Devices, then Configuration, then select Create and New Policy.
Set Platform to
Windows 10 and laterand Profile type toSettings catalog, then select Create.On Basics, name the profile, for example
WIN-Edge-Harmony-App, and record your Harmony address in the description. Select Next.Select Add settings and search for
WebAppInstallForceList.Under the category Microsoft Edge, select Configure list of force-installed Web Apps, then close the picker. The policy is published for both device and user scope, so two copies appear. Choose the one that matches what you will assign to. Device scope installs Harmony for every user of a shared machine.
Set the toggle to Enabled. The value box is a single free-text field, so paste the whole JSON array into it.
Select Next through Scope tags.
On Assignments, select Add groups and choose a pilot group of five to ten devices. Select Next.
Review the summary and select Create. Widen the assignment once the pilot confirms Harmony installs and signs in.
Google Chrome
Chrome's settings are not in the Intune settings catalog by default, so you must import Google's policy templates first.
Download
policy_templates.zipfrom chromeenterprise.google/browser/download. Fromwindows/admx/, takegoogle.admx,chrome.admx, and theen-UScopies ofgoogle.admlandchrome.adml.Go to Devices, then Configuration, then the Import ADMX tab, then select Import.
Import
google.admxfirst, paired withgoogle.adml. This file defines the namespace that Chrome's template depends on, so importing Chrome first fails validation.Import
chrome.admxpaired withchrome.adml. Wait until both rows show status Available.Create a settings catalog profile as in steps 2 to 4 above, named for example
WIN-Chrome-Harmony-App.Search for
WebAppInstallForceList. The imported settings appear under Google, then Google Chrome. Enable the setting, paste the same JSON array, assign the profile and create it.
Using a script instead
If ADMX import is unavailable in your tenant, write the value directly with a script. This covers Chrome and Edge together.
Go to Devices, then Scripts and remediations, then Platform scripts, then Add, and select Windows 10 and later. Set Run this script using the logged-on credentials to No, Enforce script signature check to No, and Run script in 64-bit PowerShell host to Yes.
Opening Harmony at sign-in
On service desk workstations where Harmony is the primary tool for the shift, you can have it open automatically. Add the WebAppSettings policy in the same category, with this value:
Confirm the identifier at chrome://web-app-internals on a machine that already has Harmony installed before rolling this out widely.
Configuring Jamf Pro
Jamf manages Apple platforms. If you also have Windows devices, pair this with Intune or JumpCloud.
Go to Computers, then Configuration Profiles, then select New.
On the General payload, name the profile, for example
MAC-Harmony-App, set Level toComputer Level, and set Distribution Method toInstall Automatically. Computer Level matters, because a user-level profile installs Harmony for one account only.Select the Application & Custom Settings payload, then External Applications, then Add.
Set Source to
Upload File (plist)and Preference Domain tocom.google.Chrome. For Microsoft Edge, usecom.microsoft.Edgein a second payload.Upload or paste the property list below. If your Jamf Pro version offers a Google Chrome manifest under the Jamf Repository source, you can use that instead and fill the field in a typed form.
On the Scope tab, target a smart computer group. Start with a test group.
Select Save. The profile installs at the next check-in, and Harmony appears the next time Chrome starts.
On macOS this value must be a real property list array of dictionaries, as shown above. Pasting the Windows JSON string into a Mac profile does not work, and fails without an error message.
On macOS, Harmony installs to ~/Applications/Chrome Apps.localized/ and appears in Launchpad and Spotlight.
Configuring JumpCloud
JumpCloud covers Windows and macOS through two different mechanisms, so build one policy per platform and bind both to the same device group. Windows devices need the JumpCloud agent, and Macs must be enrolled in JumpCloud MDM.
Windows
Go to Device Management, then Policy Management, then New Policy, and select the Windows tab.
Choose the Advanced: Windows Registry template.
Name the policy, then add a registry value with Registry Hive
HKEY_LOCAL_MACHINE, PathSOFTWARE\Policies\Google\Chrome, NameWebAppInstallForceList, and TypeString (REG_SZ). Paste the JSON array as the value, on a single line.Add a second registry value, identical except for the path, using
SOFTWARE\Policies\Microsoft\Edge.On the Device Groups tab, bind the policy and save.
If the registry template is not available in your tenant, use Commands with the PowerShell script from the Intune section, run as System on a repeating schedule so it reapplies itself.
macOS
Save a configuration profile containing the com.google.Chrome payload shown in the Jamf Pro section, then go to Policy Management, New Policy, Mac, and choose the Custom MDM Configuration Profile template. Upload the profile and bind it to your Mac device group.
Configuring Workspace ONE UEM
Windows
A script is the lower-friction route, because it needs no template import and covers both browsers at once. Go to Resources, then Scripts, then Add, and select Windows. Set the language to PowerShell, the execution context to System, and the architecture to 64-bit, then paste the script from the Intune section. Assign it to a smart group with a periodic trigger, so the value is restored if it is changed locally.
macOS
Go to Resources, then Profiles, then Add, then Apple macOS, then Device Profile. Select the Custom Settings payload and paste the property list from the Jamf Pro section, with the target domain com.google.Chrome. Assign to a smart group and select Save & Publish.
Configuring Ivanti Neurons for UEM
This applies to Ivanti Neurons for UEM and to older MobileIron Core builds. Console labels differ slightly between the two, but the mechanism is the same.
Windows
Go to Configurations, then Add, then Windows, then Custom Settings, and add an OMA-URI setting. For Microsoft Edge, no template import is needed. For Chrome, ingest Google's templates through the same mechanism first, then reference the Chrome node at:
Set the value using ADMX policy syntax, with the quotes in the JSON escaped for XML:
macOS
Go to Configurations, then Add, then macOS, then Custom Configuration, and upload the same configuration profile you would use with Jamf Pro or JumpCloud.
Configuring Kandji
Save a configuration profile containing the
com.google.Chromepayload from the Jamf Pro section.Go to Library, then Add New, then Custom Profile.
Upload the profile, name the library item, for example
Harmony app, and assign it to the Blueprints that should receive it.Select Save. Kandji applies the profile at the next agent check-in, and Harmony appears at the next Chrome launch.
Configuring any other MDM
There is no Harmony-specific integration involved. If your management tool can do any one of the following, it can deploy the Harmony app.
Write a Windows registry value. Set WebAppInstallForceList as a REG_SZ value containing the JSON array, under HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome for Chrome, or HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge for Edge.
Deliver a macOS configuration profile. Use the com.google.Chrome property list payload from the Jamf Pro section. It is portable across every Apple MDM.
Manage Chrome from the Google Admin console. If your browsers or ChromeOS devices are enrolled in Chrome Browser Cloud Management, go to admin.google.com, then Devices, then Chrome, then Settings, then Users & browsers. Select the target organizational unit, find Force-installed web apps, and paste the same JSON array. On Windows, note that registry policies take precedence over cloud policies by default.
Place a file on Linux. Write a JSON file with WebAppInstallForceList as a key to /etc/opt/chrome/policies/managed/harmony.json for Chrome, or /etc/opt/edge/policies/managed/harmony.json for Edge, owned by root with mode 0644.
Setting up iPhone and iPad
Apple provides no equivalent of WebAppInstallForceList, so the Harmony app cannot be installed silently on iOS or iPadOS the way it can on Windows and macOS.
What you can do instead is push a managed Web Clip: a Harmony icon on the home screen that opens the app full screen, without Safari's browser controls. Harmony supports this, so the icon uses the Harmony name and opens without a browser bar.
Most MDM platforms offer a Web Clip payload directly. In Intune it is under Apps, then iOS/iPadOS, as the Web clip app type. In Jamf Pro it is the Web Clip payload. Set the URL to https://yourcompany.harmony.io/ and enable full screen.
What your users see
Installation is invisible. There is no prompt, no progress bar, no restart, and no administrator rights required.
Afterwards your users find a Harmony entry in the Start menu, or in Launchpad on macOS, with the Harmony icon and searchable from the taskbar. They also get a desktop shortcut if you enabled it. Opening it gives a clean standalone window with no address bar and its own taskbar button, which can be pinned like any other application. While the policy is assigned, the app cannot be removed and shows as managed by your organization.
Allow up to eight hours for the policy to reach a device, then a browser restart for the app to appear. To test immediately, force an MDM sync on the device and fully close and reopen the browser.
Verifying the installation
On a target device, open
chrome://policyoredge://policyand select Reload policies.Find
WebAppInstallForceList. The status should read OK. Anything else, or the policy missing entirely, tells you where the problem is.Check
chrome://appsfor the Harmony app.
A successful result in your MDM console confirms only that the policy value was written, not that the app installed. That evidence is in the browser.
Troubleshooting
The policy does not appear at chrome://policy
For Chrome, the policy templates were never imported. Otherwise the value was written to the wrong registry hive.
Confirm the ADMX import status is Available, or check the value under HKEY_LOCAL_MACHINE.
The policy appears with status Error
The JSON is malformed, usually curly quotes or a trailing comma.
Re-paste the value from a plain text editor.
The policy reads OK but no app appears
Harmony or its icons could not be reached at install time, usually a proxy or SSL inspection rule.
Allow *.harmony.io, then open chrome://web-app-internals for the exact reason.
Harmony opens in a browser tab
default_launch_container is missing or set to tab.
Set it to window. The change applies to new installations.
It works in Edge but not Chrome
Only one browser's policy was deployed.
The two browsers read separate settings, so deploy both.
Removing the app
Remove the group from the policy assignment, or set the value to an empty array []. Enforcement stops at the next browser launch.
The app itself stays installed and simply becomes removable by the user. This is deliberate, so that a policy change does not delete an app someone is working in. Neither browser offers a supported silent uninstall for web apps, so plan removal as a message to your users rather than a command.
Related Resources
Last updated
Was this helpful?
