> For the complete documentation index, see [llms.txt](https://docs.bluefletch.com/bluefletch-enterprise/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bluefletch.com/bluefletch-enterprise/product-guides/device-applications/launcher-upgrade-tool/technical-guide.md).

# Technical Guide

### Usage

### Manual Process

1. Navigate to your BlueFletch Portal and go to **Admin > Downloads**.
2. Download the latest version of Launcher 4 (or a desired previous version).
3. (Optional) Use an MD5 tool to generate a checksum for the downloaded APK and save it for future reference.
4. Retrieve the checksum from **Admin > Downloads** and compare it to the one generated in the previous step.
5. Install the downloaded application on a device currently running Launcher 3.
6. Uninstall the previous Launcher 3 version using the following command:

`adb uninstall com.bluefletch.launcher (or the relevant BlueFletch package name)`

7. Install the new Launcher 4 APK using the following command:

`adb install {EMS Launcher apk file path}`

### Automated Process

1. Navigate to your BlueFletch Portal and go to **Admin > Downloads**.
2. Download the latest **Launcher 4 Migration Tool**.
3. Install the Launcher 4 Migration Tool on the device.
4. Run the following intent from your MDM to initiate the migration process:

**SOTI intent:**

```
sendintent -a "intent:#Intent;action=android.intent.action.MAIN;component=com.bluefletch.upgradetool/com.bluefletch.upgradetool.ui.silent.SilentInitActivity;S.url=PATH_TO_LAUNCHER4_DOWNLOAD;S.orgId=YOUR_BF_ORG_ID;S.checksum=CHECKSUM_FROM_LAUNCHER4_DOWNLOAD;end"
```

**Workspace ONE intent:**

```
mode=explicit,action=android.intent.action.MAIN,package=com.bluefletch.upgradetool,class=com.bluefletch.upgradetool.ui.silent.SilentInitActivity,extraString=url=PATH_TO_LAUNCHER4_DOWNLOAD,extraString=orgId=YOUR_BF_ORG_ID,extraString=checksum=CHECKSUM_FROM_LAUNCHER4_DOWNLOAD,broadcast=false
```

**Zebra StageNow XML:**

```xml
<wap-provisioningdoc>
  <characteristic version="10.5" type="Intent">
    <parm name="Action" value="StartActivity" />
    <parm name="ActionName" value="android.intent.action.MAIN" />
    <parm name="Package" value="com.bluefletch.upgradetool" />
    <parm name="Class" value="com.bluefletch.upgradetool.ui.silent.SilentInitActivity" />
    <characteristic type="Extra">
    <!-- Launcher 4 Download URL -->
      <parm name="ExtraType" value="string" />
      <parm name="ExtraName" value="url" />
      <parm name="ExtraValue" value="PATH_TO_LAUNCHER4_DOWNLOAD" /> 
    </characteristic>
    <characteristic type="Extra1">
    <!-- Org ID -->
      <parm name="Extra1Type" value="string" />
      <parm name="Extra1Name" value="orgId" />
      <parm name="Extra1Value" value="YOUR_BF_ORG_ID" />
    </characteristic>
    <characteristic type="Extra2">
    <!-- Launcher 4 Download Checksum -->
      <parm name="Extra2Type" value="string" />
      <parm name="Extra2Name" value="checksum" />
      <parm name="Extra2Value" value="CHECKSUM_FROM_LAUNCHER4_DOWNLOAD" />
    </characteristic>
  </characteristic>
</wap-provisioningdoc>
```

**ADB equivalent:**

```
adb shell am start -n com.bluefletch.upgradetool/com.bluefletch.upgradetool.ui.silent.SilentInitActivity --es url "PATH_TO_LAUNCHER4_DOWNLOAD" --es orgId "YOUR_BF_ORG_ID" --es checksum "CHECKSUM_FROM_LAUNCHER4_DOWNLOAD"
```

#### Intent Summary

The following summarizes the intent to send, including the target package and activity, the required extras, and the optional extras.

| Target       | Value                                                     |
| ------------ | --------------------------------------------------------- |
| **Package**  | `com.bluefletch.upgradetool`                              |
| **Activity** | `com.bluefletch.upgradetool.ui.silent.SilentInitActivity` |

<table><thead><tr><th width="196.01171875">Extra</th><th width="115.7734375">Type</th><th width="111.23828125">Required</th><th>Description</th></tr></thead><tbody><tr><td><code>url</code></td><td>String</td><td>Yes</td><td>Download URL for the Launcher 4 APK</td></tr><tr><td><code>orgId</code></td><td>String</td><td>Yes</td><td>Your BlueFletch organization ID</td></tr><tr><td><code>checksum</code></td><td>String</td><td>Yes</td><td>MD5 checksum of the Launcher 4 APK</td></tr><tr><td><code>backoffDelayMinutes</code></td><td>Long</td><td>No</td><td>Minutes to wait before retrying the upgrade after attempt that did not meet constraints. (default: 5)</td></tr></tbody></table>

* To obtain the **URL**, navigate to **Admin > Downloads** in your BlueFletch Portal, locate "BF Launcher" (this is Launcher 4), and click "Copy URL".
* To obtain your **orgId**, navigate to **Admin > Organization** in your BlueFletch Portal.
* To obtain the **checksum value**, navigate to **Admin > Downloads** in your BlueFletch Portal, locate "BF Launcher", and click "Copy Checksum".


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.bluefletch.com/bluefletch-enterprise/product-guides/device-applications/launcher-upgrade-tool/technical-guide.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
