  You're browsing the documentation for an old version of SupportPal. Consider upgrading to the [latest version](https://docs.supportpal.com/current/Documentation+Home). 

# Upgrading to 3.0 from 2.6

SupportPal 3.0 is a major release containing a completely revamped interface. The interface has been designed for better functionality and mobile support, and includes a dark mode option.

  This upgrade guide is aimed at those upgrading from the last stable version (2.6.0) to 3.0.0. Upgrading from an earlier version is possible, but there may then be more important and breaking changes than listed below. 

**Estimated Upgrade Time: 1-2 Hours.**

  **Backup!**  
 Before attempting an upgrade, please take a backup of both your SupportPal database and all associated SupportPal files, then verify the backup is valid (not corrupt). 

## What's New?

View the [3.0 Release Notes](3.x+Release+Notes) for the new features and improvements in this series.

## New System Requirements

- The new minimum PHP version is now **7.2.0**.  
     PHP 7.0 and 7.1 have reached [end of life](https://www.php.net/supported-versions.php) and support for them have been dropped in this release.
- The **[Ctype](https://www.php.net/manual/en/book.ctype.php)** PHP extension is now required.
- libxml 2.7.0 or above is now required.

## Email Template Changes

The upgrader will attempt to automatically update email templates that have not been modified. If you see a message stating `Unable to update email template` when running database upgrades then you'll need to update the template mentioned manually:

1. Browse to Settings > General > Email Templates and find the template mentioned
2. In the text editor, click on the `<>` button (view HTML)
3. Replace all content with the relevant email template from the list below
4. Repeat for any translated versions
5. Click Save

#### Ticket feedback request

The 'Ticket feedback request' email template has been updated to add a neutral feedback option.

```
<table width="450" style="width:450px;">
    <tbody>
        <tr>
            <td align="center" style="text-align: center">
                <a href="{{ route('ticket.frontend.ticket.feedback', [ ticket.number, token ]) }}?rating=1">
                    <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAABqlBMVEUAAAAuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEuzHEeM3AYAAAAjXRSTlMAAQIDBAUGBwgJCgsMDg8QERITFBUWFxgaGxwdHh8gIiQmKSorLC4vMDIzNDY4OTo8Pj9BQ0RFR0lKS0xOT1RVVldYWVtcXV5hYmNmaG9zdHV4fH5/hYiLjo+UlZeYmp6gpaaoqqutr7C1t7q8vsHDxcfIzM7P0dPV19na3ODi5Obo6evt7/Hz9ff5+/3xUOGfAAACRklEQVQYGYXBiSOTYQDH8d+z7Z0iYpPpkhrpPuhS6dKlRBedohKx7kQpraKY7fs/9zzvsA2tz0cFvH3dbzJYk73Hy/VPdQPke3/YaDWxUZabOqgVTCfOrzv7akrDayvj18dwnq5RIe8V1qt65VT1Ys3ElK/0CzDZpEKRZ0A6rpzQZ+BxQCucBtK1WmRGgA6tpn4WZkq1oB3o1OrqgGFlVWagX5ZpaIlokWloicg6ARyVrx9+BiWFx4CLygqPAVdkPYTpgKwo0CyrByciXw9OtaR1wClZt2HCyEritMiXxDkm6yZMSTKzsF9OAqdBvgROk6y1QEzaCpmgnEasMSNfI9a4kTME16Q2eK6sxkSyJ6wFjYlkT1i+VngpPYBzKq4G5qW3sFPFeYCnKdik4gxQpnmo1n8AVfoBG1WcAdbpA8RVXAgI6wm0ybf+zUBQeZon2+WLQMboAvTJdxfOKMfLQEhOM7yWtsOckdMGyYCWXIXv8vXBDSmQhrickjT0atGmDJyR4wF1kh5AQr7LwP2gfLtTMBWQ0w4zRtJWoEGOGQamr26piB4YAdIxOV4KOuSMwoSRExwkZ3abfF2Q8uRsBm7JZ86mWfCiTL4dwCVl3QKOKMs7OZiC8a6Ysirm4KNRVmAC2K8lRksqvkI6qkVl00CnVorPAbuUs+E3MBxVIa8bq1X5yr9h3StXTuh8CsjsUSGvDyfRVhs2Uqjq0KMM1qdqrbD3O8vNdxitwrRMku9PZ1j/Er08lML3rrveqDivrKq8xGi5v+9pCmPJArjSAAAAAElFTkSuQmCC" alt="Good, I'm satisfied">
                </a><br>
                Good, I'm satisfied
            </td>
            <td align="center" style="text-align: center">
                <a href="{{ route('ticket.frontend.ticket.feedback', [ ticket.number, token ]) }}?rating=2">
                    <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAABmFBMVEUAAADxxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/xxA/4+wrwAAAAh3RSTlMAAQIDBAUGBwgJCgsMDQ4PERITFBUWFxgaGxwdHyAkJikqKywuLzAzNDY4Ojw+P0FDREVHSUpMTk9SVFZXWFlcXV5iY2Zob3BzdHV4fH6ChYaIiYuPlJWXmJqeoKWmqK2vsLK1t7q8vsHDxcfIzM7P0dPV19na3ODi5Obo6evt7/Hz9ff5+/36/rmZAAACCUlEQVQYGYXBCUNMUQCG4e9M3aFFNU2apIYpoVBZIkWIKNkiVKJQ2SMiad/m/dvOuVNqVs+jJF5j3/s41uzA+RJlVfuCvT6dMcokMkGquVNKY3pwFu83VhYGC8pit6ZxRvcrmTeFNRXVrtAA1nJEexX+AGYblKz8JbAV067878DzgNJcAraqtMO8BbqVSXQNlgu1rQvoUWa1wLgSyuIwIsvUtYT1T7S1WtYF4Kx8I7CQJyk4DdxQgnkDPJb1FJYCssJAs6yHOBXydeI0SCoGLsq6BzNG1jzOOflGce7IugtzkswaNMmZxGmQ7wHOZVkFQESqgXienHqsb0a+MNZKUM4Y3JTa4ZUS6ifnHwW1rWpsYfiAfG3wWhqETuVWCZvSBzim3DzA0xxUKzcDFGkTKvQfQEh/4JByM0CxPkNMueUDQQ1DuxICXgojXznEja7CkHwdpFqNyGmGd9IRWDdyFknTK2cIbkuBLYjJ6SDVWkSWB9RKGoRJ+QJeCiOnC5aNpBqgTtl5G9AtZwJmjLLqhQ1PzmGgX9kcBa4poR9oVWal6/DFKCEwAzQpk9KfsBXWjqIloEfpYuvAce06uAKMh5XM68Nq014lv7CelGhX/pUNIH5CybwhnMn2qqCR8kOnn8WxvlYozcnfpNrsNsrAtMyy12pPUNmEr49t4PvYFzXKzSsKlewzSvUXTrn3Jn1lbwAAAAAASUVORK5CYII=" alt="I'm not sure">
                </a><br>
                I'm not sure
            </td>
            <td align="center" style="text-align: center">
                <a href="{{ route('ticket.frontend.ticket.feedback', [ ticket.number, token ]) }}?rating=0">
                    <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAABpFBMVEUAAADnTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDznTDw8vlXlAAAAi3RSTlMAAQIDBAUGBwgJCgsMDQ4PERITFBUWFxgaGxwdHh8gJCYpKissLi8wMzQ2ODo8PT4/QUNERUZHSUpMTk9QUlZXWFlbXF1eYmNmaG9zdHV4fH6ChYiJi4+UlZeYmpudnqClpqitr7C1t7q8vsHDxcfIzM7P0dPV19na3N7g4uTm6Onr7e/x8/X3+fv9/9BgVAAAAkNJREFUGBmFwYlDi2EAx/Hfs/a+UUmtlLPYcuXMGbkSURJCyC20co4ICRVb7ftPe553W9tq5vNREa994FUaa+rmsVr9U8tjCr09YFRK8xjLTe/VCqYP59f19qYqf3Vd9HIC58kqFfPGscZblVd/E2uuWYWqPgNTO1Qs8hRYjCov/Am4F9IKJ4HF9coxL4FeldL6B+aqlNUN9Km0FuC5MurS8EiWiXVElGNiHRFZx4HDCjyCnxWS/ARwXhl+Argo6w7MhmQ1AAdlDeFEFBjCaZRUA5yQdQ0mjawZnA4FZnCOyLoK05LMH9gjJ44TUyCOs0PWaqBZ2gLpCjltWAmjQBvWRyNnFC5JXfBMGW3xmSFfWW3xmSFfgU54IQ3DGZXXBAvSa9iu8jzA0zRsVHkGqNYCNOo/gHr9gA0qzwA1egdR5YXab00mv492r1FeGPB1H7q0ZP88WcO+ciKQNjoHI8oyd8j72aSsgzAhbYWkUcZDYGEw1rz5RAJI1iljBPql0CJEFTgFPKlU4GgaPhs5HtAiaRjicrwUPFBOFOiU0w1zRtIWICbrGMyFtaQfpmR5KeiVMwaTRtIN6FFeJeBJugIpT84mYFBS47eJsAqcTvVL2gb0KGMQOKTS1ibhvVFGaBLYo1LWfoHFBuVUzwJ9WimaBHYqb9088LxBxbwBrE4Vqv2KdbtWeeGzKSC9S8W8EZx413rfSOH6fXfTWB8atcLu7yy30GtUgumYotDvPl//0nBhNEXgzUCrUXledX1tpdFyfwF8RgXXQ7P1gQAAAABJRU5ErkJggg==" alt="Bad, I'm unsatisfied">
                </a><br>
                Bad, I'm unsatisfied
            </td>
        </tr>
    </tbody>
</table>

```

## Development Changes

  All non-default plugins will be automatically disabled on upgrade and must be manually reactivated. We would recommend to read over this section and ensure each plugin works on 3.0.0 before reactivating. 

### Database changes

The following tables have been changed:

- All `feedback_*` tables have been renamed and prefixed by `ticket_`
- `article_rating` table renamed to `article_feedback_log`
- `article_rating.score` column renamed to `article_feedback_log.rating`
- `article.positive_rating` and `article.total_rating` columns have dropped. The information is still available in the `article_feedback_log` table

### API changes

The following API functions have backward incompatible changes:

- The `default_icon` parameter on the `POST` and `PUT /api/selfservice/type` endpoints has been renamed to `icon`, and now accepts [FontAwesome](https://fontawesome.com/icons) icon names as values, such as '`fa-book`'.
- The `score` parameter on the `POST /api/selfservice/article/{id}/rating` endpoint has been renamed to `rating`

### Framework

We've upgraded the core framework (`laravel/framework`) from version 5.5 to 6. Some of these releases have breaking changes which may break any code you've written.

**Notable changes**

- `str_*` functions have been replaced by `\Illuminate\Support\Str::*`
- `array_*` functions have been replaced by `\Illuminate\Support\Arr::*`
- `Event::fire` is now `Event::dispatch`
- `Cache::*` saving items to the cache for a certain period of time now uses seconds instead of minutes
- The `Input` facade, which was primarily a duplicate of the `Request` facade, has been removed. If you are using the `Input::get` method, you should now call the `Request::input` method. All other calls to the `Input` facade may simply be updated to use the `Request` facade.
- Route parameters which do not match the route definition are no longer replaced and instead added as query parameters. For more information please read: [URL Generation](https://laravel.com/docs/6.x/upgrade#rackspace-storage-driver).

For a full list of changes, please read through the Laravel upgrade guides:

1. [5.5 to 5.6](https://laravel.com/docs/5.6/upgrade)
2. [5.6 to 5.7](https://laravel.com/docs/5.7/upgrade)
3. [5.7 to 5.8](https://laravel.com/docs/5.8/upgrade)
4. [5.8 to 6.0](https://laravel.com/docs/6.x/upgrade)

We recommend to test your plugin on a development installation before upgrading your help desk. Please contact us for a development license key if you don't already have one.

### Views

Any jQuery code used before the `scripts_footer` block must be moved to the [`body end`](Plugin+Development+Views#WritingViews). jQuery is now loaded later to improve page rendering times.

The `extendedViews` and `overriddenViews` options have now also been removed. These have not been documented since being replaced with [extending templates](Plugin+Development+Extending+Templates) plugin documentation if your plugin makes use of either of these.

## Template Changes

Both the operator and frontend templates have been completely rewritten and many JavaScript libraries updated or removed. If you've made template modifications please review your files.

If you were using of the below functions in canned responses, email templates or your own custom portal templates then please read on:

- `array_get`  
     The `array_get` function no longer exists. Please use the `|get` filter instead.  
     For example `my_var|get('foo.bar', 'default')`
- `str_limit`  
     The `str_limit` function no longer exists. Please use the `|limit` filter instead.  
     For example `my_var|limit(100)`.

## Config File Changes

 **config/app.php**  
 The following logging related configuration options have been removed:

- `log`
- `log_max_files`
- `log_level`

See [Logging Configuration](/4.2/Logging+Configuration) for more information on the new config options.

 **config/trustedproxy.php**  
 The config file refers to class constants which are no longer available - this may result in fatal PHP errors if not replaced. We recommend to compare your trusted proxy configuration with our new default and copy over any changes. View the `/config/trustedproxy.php` file and [Configuring a Trusted Proxy](/4.2/Configuring+a+Trusted+Proxy) section for more information.

## Other Important Changes

- **Self-service type frontend icons**  
     The self-service section now utilises FontAwesome for the type frontend icon option, making it much easier to set a custom icon. All existing custom icons will be wiped on upgrade, and we would recommend to review your self-service type settings after in case you wish to set different icons.
- **LDAP accounts**  
     LDAP linked operator accounts are now restricted to authentication via the LDAP service. If you need to login via both your help desk email / password and also the LDAP service then we've added a [backwards compatible configuration option](App+Configuration#Other).
- **`configureMonologUsing` function removed**  
     The `$app->configureMonologUsing` function has been removed. If you had made any modifications to our core unencoded files then you may be affected. Logging can be now configured via a new `/config/logging.php` file. See [Logging Configuration](/4.2/Logging+Configuration) for more information on how to edit the new configuration file.
- **Email commands**  
     HTML is no longer supported in email commands; any HTML will be removed. For example if you enter `{% note <strong>Hello</strong> %}` then `Hello` is not going to be bold and the `<strong>` tag will be removed.