---
description: >-
  This guide explains migrating to AidboxDB 16, specifically addressing the
  absence of the jsonknife extension
---

# Migrate to AidboxDB 16

Since AidboxDB 16.1 does not have the `jsonknife` extension on board as it was available in the previous versions there is the guide explaining how to migrate to it.

## Check if extra DB migrations steps needed

Before migrating to AidboxDB 16, it's crucial to determine whether you have any indexes using that extension. To get list of indexes utilizing `jsonknife` extension, run following SQL query:

```sql
SELECT indexname, indexdef 
 FROM pg_indexes 
WHERE indexdef ILIKE '%knife%';
```

* **No Action Required:** If the query returns an empty result set, no further actions are required regarding this extension.
* **Action Required:** If the query results are not empty, you must follow the following steps.

## Migration Steps

### **Backup database**

Begin by creating a complete backup of your database. For example, this can be achieved using the `pg_dump` command:

```sql
pg_dump -U [username] [dbname] > [backupfile].sql
```

### Provision necessary functions in the new PostgreSQL cluster

To create necessary `jsonknife` functions run the following SQL with-in your PG cluster.

{% file src="../../../../assets/jsonknife-function-shims.sql" %}
jsonknife function shims
{% endfile %}

### Restore database in the new cluster

Once the new functions are defined in the new cluster, restore database using, for example, `pg_restore`.

```sql
pg_restore -U [username] -d [dbname] [backupfile].sql
```
