Migrating to FIN 5.1 using Migrate Tool

Migrating to FIN 5.1 using Migrate Tool

Below is the process to migrate from any FIN 5.0.X version to 5.1.

The migration covers the below tag changes:

  • weather → weatherStation

  • weatherRef → weatherStationRef

  • job → now a marker tag

  • jobExpr → new tag that contains the job function

  • schedule → now a marker tag

  • scheduleGrid → new tag that contains the schedule events

  • as well as other behind the scenes db format changes

Create a backup first!

We strongly recommend to make backup of the existing project prior to migrating. We also recommend storing the backup somewhere else off the server hosting FIN for best practice.

Making a full project backup:

  1. Stop the FIN service

  2. Navigate to the the FIN directory C:\Program Files (x86)\FIN Framework\FIN Framework 5.0.X.XXXX (Substitute it with your specific installation path if different)

  3. Zip up the var folder - make sure to have enough space on the server as it will also contain all the database snapshots if you have a lot of them. If you like, you can delete or move some to reduce the file size. Path to the backups folder is something like this: C:\Program Files (x86)\FIN Framework\FIN Framework 5.0.X.XXXX\var\proj\<projName>\backup

  4. Move the newly created var zip folder off the server hosting FIN. For example onto a USB drive, cloud storage service, or another server.

1) Install FIN 5.1

First, the user will have to have FIN 5.1 installed on the machine. Look at FIN Windows Installation for how to install FIN 5.1.

Note: Recommend to check the box for copying over the ‘etc', 'var’, and database files during installation in order to skip #4 below.

2) Stop both FIN Services

Then, the user will have to stop both FIN 5.0.X and FIN 5.1 services. In order for migration to work, both services cannot be running. In the Windows Services app, locate both services and stop them.

If the user has a 5.0.X project copy without 5.0.X installed, they can still migrate the project. The installation of 5.0.X is not required. The user will want to unzip the project if it's zipped. Also know where it's located on the machine. We recommend having it on the desktop for a quick find but not necessary. Make sure it's the project itself with its contents, not the project inside another folder with the same name. Sometimes that happens when unzipping. Then continue the rest of the steps.

3) Update Memory Heap for the Command Prompt

Find and note down the current Java https://finproducts.atlassian.net/wiki/spaces/FINFramework/pages/770710372 size of the FIN 5.0.X instance. Then navigate to the 'sys' folder in FIN 5.1 to find the config.props file in there. Path to sys folder should be something like this:
C:\Program Files (x86)\FIN Framework\FIN Framework 5.1.0.1614\etc\sys

Once there, open the config.props file and on line 56 regarding java.options, un-comment that line to look like below without the two leading forward slashes in the front. Also adjust the 512 number to whatever your 5.0.X was using if different than 512.
java.options=-Xmx512M

4) Copy/move the 'var' folder to FIN 5.1

Then the user can either copy/cut and paste or drag and drop the FIN 5.0.X ‘var’ into the FIN 5.1 folder.

Navigate to FIN 5.0.X 'var' folder to copy/cut or drag:
C:\Program Files (x86)\FIN Framework\FIN Framework 5.0.7.3722\var
Paste or drop in FIN 5.1 folder:
C:\Program Files (x86)\FIN Framework\FIN Framework 5.1.0.1614\

5) Navigate to the bin folder of FIN 5.1

Next, the user will need to navigate to the 'bin' folder of FIN 5.1 directory. It should look something like below but with your version.

Path: C:\Program Files (x86)\FIN Framework\FIN Framework 5.1.0.1614\bin

6) Migrate Tool

Once inside the bin folder, the user will right click on the finmigrate.bat and run as admin. This will open the Project migration tool window.

7) Migrating Project

With the Project migration tool window open, select the “Open” button next to “Select FIN project folder to migrate:”. Then the Browser For Folder window, navigate to the project to migrate and select it. Then select Ok to migrate.

8) Migration Complete

Once that is done, the migration is complete and the migration tool should display a complete message once done. There are two complete messages, you’ll want to wait until the second one after “http stopped on port 8080”. The user can now close the migration tool window and start the FIN 5.1 service and log in to the project.

If by any chance the tags did not update, the user can run the finMigrateProject() function via Folio app to update them.

We also recommend to switch the FIN 5.0.X service “Startup type” to Manual instead of Automatic if by any chance you have two different FIN services running. This can be configured via the Windows Services window and right click on the FIN service to find the Properties. Then select Manual from the dropdown for the Startup type setting. If this is not configured, both FIN 5.0.X and FIN 5.1 will be using the same port when the machine reboots, causing conflicting issues. If 5.0.X is uninstalled, this won’t be an issue.

 

9) BACnet Queries

If BACnet MSTP devices behind a router to IP are involved in the project. We recommend to add the bacnetRoute tag to a connector per router IP. Below is the query that can be ran in Folio to do this automatically.

readAll(bacnetConn).findAll(conn => conn["uri"].toStr.contains("dnet=")).map(conn => conn.merge({bacnetRoute: conn->uri.uriHost})).unique("bacnetRoute").toRecList.map(conn => conn.diff({bacnetRoute: conn->bacnetRoute})).commit

Connectors are required to have the bacnetDeviceName tag. If for some reason it doesn’t exist, the connector status will not be available, therefore won’t be able to disable/enable those connectors. The dis tag is required for these queries to write to the bacnetDeviceName tag whatever the dis tag value is. Run these queries in Folio to apply this to any BACnet connector that might not have the bacnetDeviceName tag on it. A restart of the FIN service is required.

readAll(bacnetConn and not bacnetDeviceName).toRecList.map x=> x.diff({bacnetDeviceName:x->dis}).commit() readAll(bacnetConn and bacnetDeviceName=="").toRecList.map x=> x.diff({bacnetDeviceName:x->dis}).commit()

If for some reason the dis tag doesn’t exist either, then the user will have to manually add the dis as a string and the value being the name of the connector via the property editor.