Migrating Outcomes Data to Custom Fields in WebAdMIT
Why Migrate Outcomes Data to WebAdMIT?
Migrating data from Outcomes to WebAdMIT allows you to keep key updates aligned between the two systems, especially if your team conducts application review in Outcomes. This process can help you meet association requirements for recording decisions in WebAdMIT, while also supporting dual-system workflows. For example, you can use custom field imports to pass information such as internal student IDs or other relevant data from Outcomes into WebAdMIT to maintain consistency across recruitment and review processes.
Using this process, you can transfer data like:
- Interview statuses
- Student IDs
- Campus visit (yes/no) information
- School email addresses
- Date enrollment deposit received information
- Scholarship/financial aid information
Overview of Migrating Outcomes Data to Custom Fields in WebAdMIT
If you'd like to transfer data from Liaison Outcomes to WebAdMIT, you can do so using the Outcomes to WebAdMIT data migration process. This process uses a Python script to move data from Outcomes to custom fields in WebAdMIT.
This works by following these steps:
- Outcomes exports a CSV file to an SFTP location.
- The Python script picks up the CSV file and uses the WebAdMIT API to load the data into custom fields in WebAdMIT.
- The script archives the file for data retention and auditing purposes.
Prerequisites
To set up this migration process, you'll need to have the following in place:
- A Windows server to host the Python script. Since Outcomes exports data to an SFTP location, this Windows server can be collocated with the SFTP server. To set up the server, you'll need to:
- Establish an account with admin rights on the server.
- Install Notepad++ on the server to edit the Python script.
- Install Python on the server that hosts the script.
- Optional: If the SFTP server and the Python script are on two different servers, you'll need a script or batch file to move the data from the SFTP to the script server.
- The fields needed for the export in Outcomes should be configured in prelaunch and production.
- WebAdMIT's custom fields should also be built in prelaunch and production.
Creating Custom Fields in WebAdMIT
Identify the fields you want to migrate from Outcomes to WebAdMIT. Then, create custom fields in WebAdMIT that will be the destination for this data.
WebAdMIT User Identities
Retrieving Your User Identity ID
Retrieving the IDs of Custom Fields in WebAdMIT
Configuring the Outcomes Export
To move any data points from Outcomes to WebAdMIT via SFTP, you must configure an export in Outcomes. Before setting up the export in Outcomes, it is important to have the WebAdMIT Custom Field Ids handy, as shown previously. Then:
- Create an export in CSV format as outlined in the article Working with Application Exports. The script to move data from Outcomes to WebAdMIT expects a CSV (Comma Separated Format) file as an input.
- Create the name of the CSV file without a date parameter, as the script handles this as part of the archiving process.
- The CSV file should contain column headers.
- WebAdMIT custom fields are data type sensitive, so it is important to ensure:
- Numeric fields in Outcomes are mapped to numeric custom fields in WebAdMIT.
- Boolean fields in Outcomes are mapped to Boolean fields in WebAdMIT.
- Multi-select fields in Ouctomes can be mapped to string fields or a select-from-list custom field in WebAdMIT. If using a multi-select field in WebAdMIT, ensure the drop-down values match all possibilities that are derived from Outcomes.
- String (text) fields in Outcomes are mapped to string (text) custom fields in WebAdMIT.
- Date fields in Outcomes are mapped to date custom fields in WebAdMIT. Use yyyy-MM-dd as the date format.
- The script expects the export fields to be in this order:
- CASID
- Program Unique Identifier String
- List of Outcomes fields that need to be populated in WebAdMIT custom fields.
- After the fields have been added to the export, you would need to change the field names in Outcomes to match with the WebAdMIT custom field IDs.
- Your Outcomes export should look like the below example:

- The numbers on each of the fields represent the custom field IDs that were retrieved in the section Retrieving the IDs of Custom Fields in WebAdMIT.
- You can add a column to your data mapping document to help cross-reference the Outcomes fields to the WebAdMIT IDs. For example:
WebAdMIT Field Label
WebAdMIT Field Type
WebAdMIT Field ID (Prelaunch)
WebAdMIT Field ID (Production)
Outcomes Fields
Student ID Numeric 2271421 2571462 Student ID Enrollment Deposit Received Date 2117817 2581764 Enrollment Deposit Date Campus Visit Yes/No Value 2118714 2297871 Campus Visit Scholarship/Financial Aid Information Text Value 2714171 2237848 Scholarship Financial Aid Information School Email Address Text Value 2178171 2267413 School Email Interview Status Select From List 2281917 2246458 Interview Status - Save your export once you have created it.
- Reference the article Working with Export Destinations to configure the export to send the data to an SFTP server.
Python Configuration
Next, you'll need to complete several steps involving Python. This includes installing Python, editing its script, creating an executable, and other configuration and testing.
Installing Python
Editing the Python Script
- Download the Python script and config.json file and place it on the Windows server meant to host the script.
- On the server, create a folder called OutcomesToWebAdMIT.
- Create a sub-folder called Archive.
- Place the Python script and the config.json file in the OutcomesToWebAdMIT folder.
- The CSV file from Outcomes must also be dropped in the OutcomesToWebAdMIT folder when ready.
- Edit the config.json file in the OutcomesToWebAdMIT 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 OutcomesToWebAdMIT folder. Note that the directory separations use "/".
- Set file_name to the name of the incoming CSV file from Slate.
- Set cycle in the format of “2025 - 2026” depending on the cycle you are working with. Note that this value changes each cycle so will need to be updated.
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 pip install pyinstaller command.
- Run the following command: pip install requests and ensure the requests module gets installed correctly.
- If pyinstaller and requests installation was successful, in Command Prompt, navigate to the OutcomesToWebAdMIT directory.
- Type the following command: pyinstaller --onefile main.py and press enter.
- This command converts the script into an executable.
- The executable is found in the \OutcomesToWebAdMIT\dist\ folder.
- Copy the config.json file from the OutcomesToWebAdMIT folder to \OutcomesToWebAdMIT\dist\ folder.
Testing the Executable
The following should be completed for prelaunch Outcomes to prelaunch WebAdMIT:
- Navigate to the \OutcomesToWebAdMIT\dist\ folder in Windows Explorer and double-click main.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 OutcomesToWebAdMIT \dist folder and check the main.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.
- Drop a CSV export from Outcomes into the OutcomesToWebAdMIT folder. The executable will pick up, process, and archive the file.
- Navigate to the Archive folder under OutcomesToWebAdMIT\Archive folder. You will see a timestamped_yourfilename.csv file.
- Open the file, and you will see HTTP status codes printed in each row.
- The number of status codes printed would be equivalent to the number of fields that need to be processed. So, if five fields need to have data loaded to five custom fields in WebAdMIT, then the status codes will be printed five times per row.
- Successful loads have a status code of 200, while unsuccessful loads have a status code of 404. As described below, a status code of 422 may also be present in the file.
- The 404 status code could indicate several issues, including custom fields missing in WebAdMIT, incorrect authentication methods (api_key), or CASID not found in WebAdMIT.
- The 422 status code may indicate a mismatch of data types for the field in Outcomes and custom field in WebAdMIT. It is also the expected status code if the field from the Slate export is null.
- If all rows show a 200 (or 422 for expected null data) for each field, then the next step is to check prelaunch WebAdMIT to ensure the data was loaded correctly into corresponding custom fields.
- If the data is not loaded into the correct custom fields, but is present, this means that the order of the fields in your Outcomes export is incorrect.
- 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 OutcomesToWebAdMIT folder.
- Open Command Prompt as an administrator, and within Command Prompt, navigate to OutcomesToWebAdMIT\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 "OutcomesToWebAdMIT" "PathTo\OutcomesToWebAdMIT\dist\main.exe" "PathTo\OutcomesToWebAdMIT\main.py"
- If the service is successfully installed, it displays the following message in command prompt Service "OutcomesToWebAdMIT" installed successfully!.
- Open services.msc in Windows as an admin and locate the OutcomesToWebAdMIT service.
- Start the OutcomesToWebAdMIT service.
Testing the OutcomesToWebAdMIT Service
- To test the service, navigate to Testing the executable and perform steps 6 to 14.
- If the test is successful, then stop the OutcomesToWebAdMIT service in services.msc and make sure to delete the archived file.
- After all testing is completed and preparations are being made to move to production then perform the following steps to remove the service:
- Open Command Prompt as an administrator, and within Command Prompt navigate to OutcomesToWebAdMIT\nssm-2.24\win64 (or win32 depending on your Windows server).
- Run the following in Command Prompt: nssm remove “OutcomesToWebAdMIT”
- A dialog box 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 OutcomesToWebAdMIT service is not in the list of services.
Moving the Script to Production
- If all testing has been completed in the prelaunch environments, then it is time to prepare the script for production use.
- Navigate to the OutcomesToWebAdMIT folder in Windows Explorer.
- Delete the following file and folders:
- Build folder.
- Dist folder.
- Main.spec file.
- Edit the config.json file found in the OutcomesToWebAdMIT folder.
- In the file, change the API key, URL, and cycle to production values.
- Save the file.
- Perform the steps found in Creating a Python executable section.
- Perform the steps found in Setting the Python executable as a Windows Service section.
- Start the OutcomesToWebAdMIT service.
- Have Outcomes production drop a CSV file to the OutcomesToWebAdMIT folder.
- Check the archived file for status codes for a successful load.
Cycle Over Cycle Changes
- Cycle over cycle, review your custom fields in WebAdMIT and make note of any new custom fields that need to be added.
- If new custom fields are added, make sure you follow the steps in Retrieving the Ids of Custom Fields in WebAdMIT and configure your Outcomes export to match accordingly.
- If a new export is created in Outcomes each cycle, then make sure the new export is configured to deliver files to SFTP and is named the same as the previous one. If the file name needs to change, make note of the new filename.
- Stop the OutcomesToWebAdMIT service.
- Edit the config.json file in your OutcomesToWebAdMIT and \OutcomesToWebAdMIT\dist folders.
- Update the filename if you plan to use a new filename for the new cycle in the config.json file.
- Update the cycle to correspond with the new cycle in the config.json file.
- If you plan to use a completely new WebAdMIT user for the new cycle, change the API Key and cycle in the config.json file.
- Save the config.json file in the OutcomesToWebAdMIT and \OutcomesToWebAdMIT\dist folders with the changes.
- Start the OutcomesToWebAdMIT service.
Special Considerations
- If you have multiple CASs that require custom fields updated in WebAdMIT, then you will need one version of the script and config.json file per CAS.
- If your CAS cycles overlap, you will need two versions of this process per CAS cycle. Once the previous cycle ends, make sure to stop and delete the service.














