Configure Multiple Environments Using the Development Toolkit
Overview
A dedicated development environment enables developers to make project changes without affecting the production project. Once the project changes are tested and approved they can be easily transferred to the production environment.
A development environment has several advantages:
- Less system downtime for end users
- Greater development window
- Ability to test changes before implementing to production
Topics:
Prerequisites
- An active directory service account needs to be created to manage the production environment. This account will need to have permissions defined on all data sources in both the production and development environments.
- If the service account is not a local admin it may need to have Read permissions to the Event Log. This can be set up in the Registry Editor under the “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog” node. You can right click the “eventlog” node, select Permissions, and add the users that will utilize Multiple Environment Deployment and assign them “Read” permissions. In some environments “Full Control” may need to be granted.
- The firewall settings on the server need to have an inbound rule set. The inbound rule will specify the ports used in the “Local Port” parameter specified during the environment setup.
- The Jet Data Manager will need to be installed on both the production server and the development server if using two separate servers. Also both should be of the same version.
Configure the production environment
On the production server run the Jet Data Manager as the service account user and ensure that you're connected to what will be your production project repository database.
-
Click General Settings > Environment PropertiesThe Environment properties page is displayed.
-
Click New Environment. The Add Environment window is displayed.
-
Enter the following parameters:
Parameter Description Name Name of the production environment Local Location of the environment Act as server on port An open port that will be used by the new environment Once finished, click OK
-
Click the Production header and change the Use Environment SSIS Folder parameter to True if your project uses SQL Server Integration Services as the transfer method.
Note: It is important that the parameter Use Environment SSIS Folder is set to True for all environments. This will ensure that the integration services packages are stored in separate folders for development and production.
Click OK to close the Environment properties window.
-
From the ribbon click the Windows Service Setup button.
-
Right-click the Jet Data Manager Server service and perform the following:
- Change the Start Mode to Automatic Delayed
- Change the User Name and Password to the service account user. (This needs to be an actual service account, not a user account that will login to the server and run the Jet Data Manager)
- Start the service
Configure the development environment
On the development server open the Jet Data Manager with a regular user account (not the service account that was previously used).
-
Click General Settings.
-
In the Database parameter enter a name for the development repository database and click CreateOnce the database is created, click OK.
-
Click Environment PropertiesThe Environment Properties window is displayed.
-
Click New EnvironmentThe Add Environment window is displayed.
-
Enter the following parameters:
Parameter Description Name Name of the production environment Local Location of the environment Act as server on port An open port that will be used by the new environment In this example we named this environment Development and set the port to 0.
When finished click OK
-
Click New Environment again. This time click Remote enter the remote server name. If development and production reside on the same server localhost can be used.
- The Local Port can be any open port
- The Remote Port should match the port used to setup the production environment.
-
Click the Development... header and change the Use Environment SSIS folder parameter to True if your project uses SQL Server Integration Services as the transfer method.
Note: It is important that the parameter Use Environment SSIS Folder is set True for all environments. This will ensure that the integration services packages are stored in separate folders for development and production.
Configure Global Databases
Global databases allow the Jet Data Manager to know where the related databases reside for the production and development environments.
-
Click New Global Database
-
You will be creating a series of global databases (one for each database and data source in the project) that will be used in the project.
The example below shows the creation of a global database for a NAV data source that resides on a Microsoft SQL Server instance.
Repeat this process for all databases in the project (E.g. Staging, Data Warehouse, OLAP, Excel, Etc.).
-
Once the global databases are created they will need to be configured for both the development and production environments.
For both environments for each global database click settings... On the right hand pane enter any parameters that are relevant to your environment(s). In this example we entered the following parameters.
Parameter Description Server SQL Server Instance name. If on a default instance localhost can be used. Catalog The name of the source database from which data is extracted. Collation This is the collation of the database. Deployment Target Edition of SQL Server. Connection Timeout Indicates how long the server will wait for a reply. Command Timeout Indicates how long the server will wait for a command. Example of data source setting:
Example of development stage settings:
Notice how we have named the staging databases differently from the production databases.
In this example, we have chosen to post-fix each database name with the word "Dev".
-
Once all the settings are configured for each data source, right click settings... and create the development database(s).
Once the database is created a message will appear confirming the action. Click OK and repeat the process for the other databases in your development environment.
-
Test each global database connection by right clicking settings... and click Test ConnectionIf a connection fails check the settings. Once finished click OK and exit the Environment Properties window.
Configure project to use global databases
The environments have been setup and the global databases have been configured. The next step is to configure the project to utilize the global databases.
-
Connect to your production repository and click OK
-
Open the project and right click the project name and then click Connection Manager
From here you can edit each connection individually by clicking on the notepad icon or click the Run Wizard button to cycle through each connection.
-
For each connection click Use Global Database and change it to its corresponding global database.
Close out of the Connection Manager.
-
From the ribbon, click Manual Deployment and Execution. Click Start to process the entire project.
Transfer current project to the development environement
Currently the development environment is empty. We would like both environments to be identical to start off.
-
With the project open click the Jet icon and click Export Project or Export Quick Cube Project. Select a location for the XML file.
Click the Jet icon again and click Close Project.
-
Switch over to your development environment.
Click the Jet icon and click Import Project.. Select the file and click OK.
-
Once the project is imported click No.
Transfer development project to production
Open the development project.
-
Click Multiple Environment Transfer.
-
Click Transfer to migrate the project from the development environment to the production environment.
-
Right click the production environment and selected a deployment option. This operation is physically deploying all of the objects on the production server.
Note: The execution package will run under the credentials of the service account running the Jet Data Manager Server service.
Note on Execution Packages
Execution packages will automatically update the staging database, data warehouse, and OLAP cubes on a scheduled basis. Since projects deployed from the Development Environment will replace packages in the Production Environment it is recommended that the desired execution packages be set up in the Development Environment. This way they are seamlessly transferred to the Production Environment with the package transfer. It may not be desirable to have automatic execution enabled in the development environment.
- If development and production are on the same physical server:
The Jet Data Manager Scheduler service is bound to a single repository database. To ensure only the production environment gets updated check the configuration file located at:
"C:\Users\ServiceAccountUser\AppData\Roaming\Jet Data Manager Server\Jet Data Manager Server\Versionx.x.x.x\Config.xml"
The XML file will have a tag called Initial Catalog. It should match the production repository database.
- If development and production are on the different physical servers:
Simply disable the Jet Data Manager Scheduler on the development server.
You can limit access to certain functionality to members of specific Active Directory (AD) groups. The Jet Data Manager will also log events in the environment to the Server Log table in the repository. See environment security for more information.
-