Migrating Decisions from TargetX to WebAdMIT
Overview
If you want to transfer decisions from TargetX to WebAdMIT, you can utilize the TargetX to WebAdMIT data migration process. This process uses a Python script along with Informatica to move decisions data from TargetX to update decisions in WebAdMIT.
Here’s how it works:
- TargetX exports a CSV file via Informatica to a folder on the Informatica server.
- The Python script, running on the Informatica server, picks up the CSV file and loads the data updates the decisions in WebAdMIT.
- The script then archives the file for data retention and auditing.
Prerequisites
Before setting this up, make sure you have the following:
- A Windows-based Informatica server to host the Python script. To get this ready, you’ll need:
- An account with admin rights on the server.
- Python installed on the server to edit and run the script.
- Notepad++ or another text editor installed on the server.
- An existing CAS (WebAdMIT) to TargetX data integration.
- The field Program ID (For WebAdMIT API) should be included in your existing data integration from WebAdMIT > TargetX. If it’s not, you’ll need to adjust your current WebAdMIT > TargetX integration or create a new field in TargetX for this.
Setting up Decisions TargetX
Decisions in TargetX primarily occur within the Application Review Tool (ART). This tool is not standardized across institutions but instead configured to match each client’s unique business rules and review practices. For example, some clients begin the review process immediately after an application is submitted, while others wait until certain checklist items, transcripts, or other requirements are complete before starting review.
The review process itself is managed through Salesforce Flows, which create the necessary Application Review records. Depending on how the institution structures its process, there may be multiple review stages—such as an initial review, a committee review, and then a final review and decision. These Flows are tailored to each client and determine how and when Application Review records are created, updated, and advanced through the process.
Once the final review stage is reached, Salesforce Flows push the outcomes back to the Application object. At this point, several fields are typically updated, including the Application Decision, Show Reply to Offer, Enrollment Deposit, Decision Date, and Publish Decision Date/Time. In many implementations, additional updates also occur on the Contact record, such as moving the Student Stage forward to reflect the applicant’s new status.
Publishing the decision to the applicant depends on the Publish Decision Date/Time field. If this field contains a current date, the applicant’s Decision Letter (a Visualforce page) will display conditional content within their Applicant Portal or Dashboard. If a client has not configured App Configuration and Application Type values, however, applicants will not have a portal or Dashboard to view their decision information.
WebAdMIT User Identities
To access the WebAdMIT API, you need a user account in WebAdMIT that is in the WebAdMIT Administrators Work Group and can access data for all CASs and programs. Once that is in place, complete the following steps in both environments:
- Log in to WebAdMIT with your user account.
- Click Account on the top right to view your account details.
- Click Edit My Account at the top right.
- Verify that your account has the correct organization assignments and program assignments.
- In the API Key section, click Generate New Key to generate a unique API key for your account.
- Click Show Key to view your API Key.
- Make note of the API Key, which will be required for the script and retrieving your identity ID.
Retrieving Your User Identity ID
Retrieving the Decision IDs in WebAdMIT
Data Mapping Document
We recommend creating a data mapping document that lists the TargetX Decisions and the corresponding decision Ids for Prelaunch and Production WebAdMIT. Create one for each admission cycle.
|
TargetX Decisions |
WebAdMIT Decision IDs (Prelaunch) |
WebAdMIT Decision IDs (Production) |
|---|---|---|
| Withdrew | 9128 | 106987 |
| Offer Declined | 9129 | 978217 |
| Rescinded | 9130 | 932148 |
| Offer Accepted | 9131 | 982145 |
Configuring the TargetX Export
To move data from TargetX to WebAdMIT via Informatica, you need to set up Informatica export tasks.
Here’s a quick walkthrough:
- Import the attached zip [Decisions.zip] file into your Informatica.
- Select the connections for your flat file dropbox and TargetX Salesforce (sandbox or production).
- Choose your runtime environment.

- Test the import and then click Import.
- Once imported, you will see 4 tasks created (2 mappings and 2 mapping tasks).

- Open the TargetXExport Mapping – this task will create an export out of TargetX with the required fields to import into WebAdMIT.
- Click Source and confirm the correct Connection is set.
- Click Edit Query.

- In the query, ensure the decision field is the correct field from your instance, and replace the WebAdMIT_Program_ID__c field with the WebAdMIT Program ID field from your instance of TargetX.
- You may also edit the export filter, which starts after the WHERE statement.

-
- Now click Filter and edit the Filter Condition with the WebAdMIT Program ID field from your instance of TargetX.

- Finally, click Target and ensure that all fields are included on the Incoming Fields tab.

- Save this task before closing.
- Now click Filter and edit the Filter Condition with the WebAdMIT Program ID field from your instance of TargetX.
- Open the TargetX-WebAdMIT Mapping – this will take the csv exported from TargetX and format/map a file to import into WebAdMIT.
- Click Expression and edit the DECODE statement with the field you want to import into WebAdMIT.

- Edit the Cycle and Association (CAS name).
- The value of the cycle must correspond with the cycle as it appears in WebAdMIT (e.g., "2026 – 2027", with spaces surrounding the dash).
- In the Target, ensure that the following fields are included in Incoming Fields.
- Answer
- Association
- Cycle
- TargetX_Base__CAS_Applicant_ID__c
- Your WebAdMIT Program ID field

- On the Target Fields tab, ensure that the fields are in the following order:
- TargetX_Base__CAS_Applicant_ID__c
- Your WebAdMIT Program ID field
- Cycle
- Association
- Answer
- The import script will be looking for a file with the fields in this specific order.
- If you need to change the order, check the field you want to move, and the arrows next to the Find field will become active.

- Save this task before closing.
- Open the TargetX-WebAdMIT Mapping Task
- In Runtime Options, open Advanced Options and edit the Post-Processing Commands based on your Informatica folder path; leave the file names as is.
del YOUR INFORMATICA PATH\dropbox\SfDecisionExport.csv* && copy /b YOUR INFORMATICA PATH \dropbox\header.csv + C:\Informatica\GradCAS\dropbox\data.csv YOUR INFORMATICA PATH \dropbox\TargetXToWebAdmit.csv && del YOUR INFORMATICA PATH \dropbox\data.csv && move /Y " YOUR INFORMATICA PATH \dropbox\TargetXToWebAdmit.csv" "DRIVE (i.e. C:)\TargetXToWebAdmit\" - Save this task before closing.
- In Runtime Options, open Advanced Options and edit the Post-Processing Commands based on your Informatica folder path; leave the file names as is.
Python Installation
You'll need to install Python on the server that will be hosting the script. To do so:
- Download the software from https://www.python.org/downloads/.
- Download the latest release for Windows (based on whether the server is a32 bit or 64 bit).
- Once downloaded, run the Python install file as an administrator.
- This opens an installation window:

- Click Customize Installation to display Optional Features:

- Ensure that pip is selected.
- The next page displays advanced installation options:

- Select the path to install Python and click Install.
- Once Python is successfully installed, restart the server.
- Once restarted, navigate to your system environment variables to ensure Python is appended to the end of the PATH variable. If it is not, you will need to add it. The path should be the path to the Python executable, such as C:\Users\username\AppData\Local\Programs\Python\Python310
-
To test that your Python installation was successful and added successfully to your PATH variables, run Command Prompt as an administrator, type python, and hit enter:

- If the response is similar to “Python is not recognized as an internal or external command”, then it could mean that the PATH variable is not correctly set up or your Python was not correctly installed.
Editing the Python script
- Download the Python script and config.json file from Integration Help Center and place it on the Informatica server.
- On the server, create a folder called TargetXToWebAdMIT.
- Create a sub-folder called Archive.
- Place the Python script and the config.json file in the TargetXToWebAdMIT folder.
- The CSV file from Outcomes must also be dropped in the TargetXToWebAdMIT folder.
- Edit the config.json file in the TargetXToWebAdMIT folder using Notepad++ or Notepad and make the following changes:
- Change the Api_key value to your API key for prelaunch or production.
- Change the url_link value to prelaunch or production url.
- Change Working_dir to the full directory path of your TargetXToWebAdMIT folder. Note that the directory separations use "/".
- Set File_name to the name of the incoming CSV file from Outcomes.
Creating a Python executable
Next, you'll need to create a Python executable that will run the script. To do so:
- Open Command Prompt as an administrator.
- Run the following command: pip install pyinstaller
- If you get an error message that pip is not recognized as an internal or external command, this means your Python installation did not include the pip package.
- The article How to Install PIP on Windows provides guidance on installing pip.
- Once installed, type pip –version in Command Prompt to verify if the installation was successful.
-
If pip installation was successful, rerun the pyinstaller command: pip install pyinstaller
- Run the following command to ensure the requests module gets installed correctly: pip install requests
- If pyinstaller and requests installation was successful, in Command Prompt, navigate to the TargetXToWebAdMIT directory.
- Type the following command: pyinstaller --onefile decisions.py and press enter.
- This command converts the script into an executable.
- The executable is found in the \TargetXToWebAdMIT\dist\ folder.
- Copy the config.json file from the TargetXToWebAdMIT folder to \TargetXToWebAdMIT\dist\ folder.
Testing the executable
The following should be completed for prelaunch Outcomes to prelaunch WebAdMIT:
- Navigate to the \TargetXToWebAdMIT\dist\ folder in Windows Explorer and double-click decisions.exe to open a running Command Prompt window.
- If the Command Prompt window closes immediately after opening, then there is an issue with your Python code or the config.json file. In that case, navigate to the TargetXToWebAdMIT\dist folder and check the decisions.log file. If this file shows HTTP connection errors, this could mean that your API key, URL, or Cycle is incorrect.
- Edit the config.json file to make sure the file name, directory paths, API keys, base URL, and cycle are correct.
- Once verified, run the executable again.
- If the executable continues to run, this means the JSON file is correct.
- Run the Informatica tasks configured for this process to drop a csv file into the TargetXToWebAdMIT folder. The executable will pick up, process, and archive the file.
- Navigate to the Archive folder under TargetXToWebAdMIT\Archive folder. You will see a timestamped_yourfilename.csv file.
- Open the file, and you will see HTTP status codes printed in each row.
- Successful loads would have a status code of 200, while unsuccessful loads would have a status code of 404 or 422.
- The 404 status code could indicate several issues, including the Decision ID not existing in WebAdMIT, incorrect authentication methods (api_key), or CASID not found in WebAdMIT.
- If error 422 is thrown, the applicant has already had a local status associated with their record.
- Note that Decision Codes in WebAdMIT can only be updated via API for applicants that do not already have a Local Status associated with them.
- If all rows show a 200 for each field, then the next step is to check prelaunch WebAdMIT to ensure the decision data was correctly applied in WebAdMIT.If all looks good, then close the running executable command prompt window and delete the archived file.
Setting the Python Executable as a Windows Service
To keep the script running indefinitely, the following steps are required to set up the Python executable as a windows service. For this purpose, you'll need to install a tool called NSSM (Non-Sucking Service Manager).
- On your web browser on the Windows server meant to host the script, navigate to https://nssm.cc/download
- Download the latest release of NSSM which is nssm 2.24.
- This should download a zip file called nssm-2.24.zip.
- Extract the zip file in the TargetXToWebAdMIT folder.
- Open Command Prompt as an administrator, and within Command Prompt, navigate to TargetXToWebAdMIT\nssm-2.24\win64 (or win32, depending on your windows server).
- Run the following command by replacing the paths to your Python executable and python (.py) file:
- nssm install " TargetXToWebAdMIT" "PathTo\ TargetXToWebAdMIT\dist\decisions.exe" "PathTo\ TargetXToWebAdMIT\decisions.py"
- If the service is successfully installed, it displays the following message in command prompt Service " TargetXToWebAdMIT" installed successfully!
- Open services.msc in Windows as an admin and locate the TargetXToWebAdMIT service.
- Start the TargetXToWebAdMIT service.
Testing the TargetXToWebAdMIT Service
- To test the service, navigate to Testing the executable and perform steps 6 to 14.
- If the test is successful, stop the TargetXToWebAdMIT service in services.msc and delete the archived file.
- After all testing is completed and preparations are being made to move to production, perform the following steps to remove the service:
- Open Command Prompt as an administrator, and within Command Prompt navigate to TargetXToWebAdMIT\nssm-2.24\win64 (or win32, depending on your Windows server).
- Run the following in Command Prompt: nssm remove “TargetXToWebAdMIT”
- A dialog will open to ask if you want to remove the service, click Yes, and it should say the service was successfully removed.
- Open services.msc as an admin and refresh the services to ensure the TargetXToWebAdMIT service is not in the list of services.
- Open Command Prompt as an administrator, and within Command Prompt navigate to TargetXToWebAdMIT\nssm-2.24\win64 (or win32, depending on your Windows server).
Moving to Production
- After successful testing in prelaunch:
- Delete the Build, Dist folders and main.spec file.
- Update config.json with production API keys, URL, and cycle.
- Rebuild the executable and set up the service.
- Update the expression in the TargetX to WebAdMIT mapping to change the decision IDs to be production Decision IDs from WebAdMIT.
- Update Informatica mappings to point to production TargetX.
- Run the service and verify.
Cycle Over Cycle Changes and Special Considerations
Review the following information regarding maintaining this process from cycle to cycle and other considerations.
Non-Overlapping Cycles
It's important to note that Decision IDs in prelaunch and production WebAdMIT change cycle to cycle. In preparation for the next cycle, complete the following steps:
- Revisit the Retrieving the Decision IDs in WebAdMIT section to grab the new Decision IDs.
- Update the Informatica decision DECODE statement with the new Decision IDs.
- In the Informatica expression, update the Cycle value to the new years (e.g., "2026 – 2027", with spaces surrounding the dash).
- The TargetXToWebAdMIT service may continue to run; no changes are needed to the script or the config file.
Overlapping Cycles
If a new cycle opens while the previous cycle is still active, updates to the Informatica expressions will be required. Complete the following steps to add a new cycle:
- Revisit the Retrieving the Decision IDs in WebAdMIT section to grab the new Decision IDs.
- Update the Informatica decision DECODE statement with the new Decision IDs. Additionally, you will need to add the cycle so the expression knows which set of IDs to use.
- In the Informatica expression, update the Cycle value to the new years (e.g., "2026 – 2027", with spaces surrounding the dash). Additionally, you will need to use TargetX_SRMb__Start_Term_Year__c to the expression to indicate which cycle should be used.
- Add a schedule to the new cycle’s taskflow that runs at a different time than the existing taskflow. The TargetXToWebAdMIT service is looking for a specific file name, and while both can export the same file name, they cannot be on the SFTP at the same time without overwriting each other.
- The TargetXToWebAdMIT service may continue to run; no changes are needed to the script or the config file.
Multiple CASs
If you have multiple CASs that need this script in WebAdMIT, you may run the same script with different exports that have the appropriate information configured. The file name will need to be the same across all exports. Have the exports run to the SFTP at different times.






