Complete the following steps to configure multiple environment transfer.
- Create a Repository Database for each Environment
- Create a Service User for Each Environment
- Configure the Server Service for each Environment
- Assign Each Service User to the Associated Environment's Project Repository
- Configure the Firewall
- Configure the Environments
- Create Additional Intermediate Environments
- Configure Global Databases
- Multiple Environment Security
- Multiple Environment Transfer
- Initial Steps Prior to Environment Transfer
Create a Repository Database for each Environment
You must create a new project repository database for each Environment. It can be helpful to follow a naming convention to clearly identify each database such as projectRepository_Dev | projectRepository_Test | projectRepository_Prod. These databases should reside on the associated environment server. To create another repository database:
- In Jet Data Manager Tools Menu > Options > Project repository Tab
- Indicate the correct server name.
- Type the desired database name for this new repository.
- Click Create.
Create a Service User for Each Environment
Each Environment (except for Development) needs an individual "Log-on As" user. This is typically the same "service" user used to run the Scheduler service. The server service is used to communicate between your environments and complete environmental transfers. This user will be initiating the deployment and execution operations triggered through other environments, therefore, needs to have Db_Creator security permissions on all associated databases for that environment.
Configure the Server Service for each Environment
Each environment (except for Development) needs to have an instance of the Jet Data Manager Server Service. You'll need to modify the service to use the "Log-on As" service created in the previous step. (Please note: you will be unable to start the service until you 1. Assign the service user to the associated environment's project repository[step below] and create the associated environment(s) in the Jet Data Manager.)
One instance of the Jet Data Manager Scheduler Service and the Jet Data Manager Server service are installed when installing the Jet Data Manager, so you may not need to create a new service. However, if you are running two (non-dev) environments on the same machine, you will need to create another instance of the Server service. To create an additional service:
- Jet Data Manager Tools Menu > Windows Service Setup
- Add Service
- Provide the necessary info for the service & click OK. (You may need to complete the following step first.)
Assign Each Service User to the Associated Environment's Project Repository
When you start the Server Service (later on in this article), the "Log-on As" user opens an instance of the TimeXtender.exe process (the Jet Data Manager without the UI) in the background. This process needs to know what repository to connect to. To assign the Service Account to the associated environment's project repository:
- Log into windows using the service account that will be used to run the service and launch the Jet Data Manager OR
- Navigate to the timextender.exe application file in the Jet Analytics installation directory, Shift+Right Click and choose Run as different user.
- Enter the credentials for the Service Account and click OK. This will run the Jet Data Manager application as the Service Account user.
4. The Jet Data Manager will ask you to enter the SQL Server and Database name for the project repository. Enter the server and database for the repository you want to associate with the service. Click OK/Next to confirm your settings.
5. Close the instance of the Jet Data Manager running as the Service Account.
Once you have completed the initial setup, you should now be able to create the Environments in the Jet Data Manager. Please note, you will be unable to start the service until we create the environments.
Configure the Firewall
If configuring multiple environments across multiple servers it will be necessary to open the proper ports to allow the Jet Data Manager to communicate across the servers. This will depend on the ports you define for each environment.
Communication between the environments then works in the following way:
- The Developer client will attempt to reach the Production Server using the Remote Port specified and the Production Server will listen on this same port.
- The Production Server will then attempt to respond back to the Developer Client using the Local Port specified.
So in the above example you will need to ensure the following Firewall Rules are created:
- Production Server: Inbound TCP Port 10025
- Developer Client: Inbound TCP Port 10020
Configure the Environments
- Create the Local Production Environment in the Production Repository
- Log into the Production Server
- Open the Jet Data Manager & switch to the Production Repository
- Open Environment Properties
- Create the "local" production environment.
- Start the Production Server Service (using the Production Service user)
- Create the Local Development Environment in the Development Repository.
- Log into the Development Server
- Open the Jet Data Manager & switch to the Development Repository
- Open Environment Properties
- Create the "local" development environment
- Create the Remote Production Environment in the Development Repository.
- In Environment properties, in the development repository & server.
- Create the "remote" Production Environment.
The completed configuration of Development and Production should look something like this:
Create Additional Intermediate Environments
If you wish to create additional intermediate environments, you can do so by slightly modifying the previous instructions. For example, if you were to create a Test Environment you would follow these steps.
- Be sure to complete initial setup steps for this Environment.
- Create the Test Environment in the Test Repository (on the test server, if a separate server is being used).
- Create the Remote Production Environment in the Test Repository
- Start the Test Service (using the Test Service User)
- Create the Remote Test Environment from the Development Repository
- Adjust the Environment Sequence numbers by click in the environment name in the environment properties dialog.
Configure Global Databases
When using Multiple environments it's important to identify a separate set of databases for each environment. The Jet Data Manager uses Global databases as a way to define dynamic database connections that are configured on a "per-environment" basis.
- Review all the databases that exist in your project and note the desired SQL server names and database names to be used in each environment.
- Create the Global Database in Environment Properties in the Development Environment.
- Define the Server & Database Name for Development.
- Define the Server & Database Name for Production.
- Create new databases as necessary by right-clicking on "settings" in the desired cell.
- Click OK to exit the Environment Properties Dialog
- Right click on the desired database in your project and click Edit Database
- Click: Use Global Database
- Select the created global database from the drop-down.
- Repeat these steps for any databases or data sources that are environment specific.
Multiple Environment Security
Once Multiple Environments are configured, you can assign which security groups have permissions to perform certain actions.
Open Environment Properties
- Right-Click on the Environment name you wish to secure.
- Click Environment Properties
- Assign the Active Directory group which you wish to have this permission.
- Admin: Can carry out all below actions. (Specifying a security group for the Admin role ONLY, will disable any of the following actions in the specified environment for users not in that group.)
- Transfer: Can transfer projects to this destination environment through the Environment Transfer Dialogue.
- Deploy: Can Deploy this destination environment through the Environment Transfer Dialogue.
- Execute: Can Execute this destination environment through the Environment Transfer Dialogue.
- Database: Can edit properties and perform the create databases action in this environment within the Environment Properties Dialogue. Users not granted the Database permission will be able to view all properties but will not be able to modify them.
Multiple Environment Transfer
Now that you have configured multiple environments you may want to promote your project to the next environment.
Initial Steps Prior to Environment Transfer
- Deploy & Execute your entire project in the previous environment.
- This can identify any potentially unresolved bugs.
- Prepare an Execution Package to run after the transfer.
- If you have made changes to any Incremental tables, be sure to select those tables for full-load in this package.
- Be sure you name the package so you and others know it's for a one-time use.
- Stop the scheduler service in the destination environment.
- This will ensure no scheduled executions begin during the transfer.
- Ensure no execution packages are running in the destination environment.
- In the Development Environment, open Multiple Environment Transfer
- Click Transfer
- Deploy, Managed & Differential
- Run the desired Execution Package.