> 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/bluefletch-launcher/whats-new-in-l4/upgrading-to-l4.md).

# Upgrading to L4

Migrating from Launcher 3 to Launcher 4 equips your devices with the latest feature enhancements, new functionalities and improved performance. Launcher 4 also aligns strongly with Google Play app policies and requirements requiring a namespace change for customers that use the sideload version of the APK. Because of this, BlueFletch has provided both manual and automated procedures to ensure a smooth upgrade from Launcher 3 to Launcher 4.

## Upgrading Launcher in Managed Play Store

{% hint style="success" %}
This applies to your environment if your currently installed Launcher has the package name `com.bluefletch.ems.emm.launcher`
{% endhint %}

If you have installed Launcher via the Managed Play Store (e.g. via Intune or other MDM via Android Enterprise), this process will be a simple version upgrade — select the latest 4.x closed track and Launcher 4 will install over the existing Launcher 3.

## Upgrading Launcher installed via MDM (sideload)

{% hint style="success" %}
This applies to your environment if your currently installed Launcher has the package name `com.bluefletch.launcher`.
{% endhint %}

If you have installed Launcher by downloading the APK from the BFE Portal, this process involves uninstalling the Launcher 3 package named `com.bluefletch.launcher` and installing the new Launcher 4 package named `com.bluefletch.ems.emm.launcher`. Since MDMs have varying degrees of capabilities in terms of swapping applications, below are both manual and automated processes that can be used to upgrade to Launcher 4.

The manual process follows a standard procedure including checksum validation to ensure APK integrity. The automated process leverages the Launcher Migration Tool for a seamless transition to the latest version.

### 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".

## Configuration Changes

You should be able to use your current Launcher 3 configuration with the new Launcher 4. Some newer features may require using the new app configuration section, but you can make those changes after you've upgraded the Launcher application.


---

# 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, and the optional `goal` query parameter:

```
GET https://docs.bluefletch.com/bluefletch-enterprise/product-guides/bluefletch-launcher/whats-new-in-l4/upgrading-to-l4.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
