Migrating Data from Third-Party Software to WebAdMIT
If you're using a third-party software and you'd like to transfer its data to WebAdMIT, you can do so using the WebAdMIT data migration process. This process uses a Python script to move data to custom fields in WebAdMIT. Note the following:
- If you're migrating data from Slate to WebAdMIT, see the Migrating Data from Slate to WebAdMIT article.
- If you're migrating data from TargetX to WebAdMIT, see the Migrating TargetX Data to Custom Fields in WebAdMIT article.
- If you're migrating data from Outcomes to WebAdMIT, see the Mirgrating Outcomes Data to Custom Fields in WebAdMIT article.
- If you're migrating data from any other system, review the guidance below.
Overview
Migrating data to WebAdMIT via a Python script involves the following steps:
- Export a CSV file to an SFTP location.
- The Python script picks up the CSV file and uses the WebAdMIT API to load the date into custom fields in WebAdMIT.
- The Python script archives the file for data retention and auditing purposes.
Using this process, you can transfer data like:
- Interview status
- Student ID
- Campus visit (yes/no)
- School email address
- Date enrollment deposit received
- Scholarship/Financial aid information
For guidance on migrating decision codes, see Migrating Decisions from Third-Party Software to WebAdMIT.
Prerequisites
WebAdMIT User Identities
Retrieving your User Identity ID
Retrieving Custom Field IDs in WebAdMIT
Export Configuration
To configure the export:
- Ensure that the Program Unique Identifier String is mapped in the source database.
- When loading data into a database using the CAS API, you will need to create a new field to store the Program Unique Identifier String and map it to progMate.progSele0.uniqueIdentifier.
- If you are loading application data from WebAdMIT, and you are not already loading the Program Unique Identifier String (in WebADMIT the field is called Program ID (for WebAdMIT API) (program_id), add a new field for CAS Program Unique Identifier String and map it to program_id.
- Create an export in the source database. The custom field IDs retrieved previously will be needed for this step. The script expects the exports in the query in the following order:
- CAS ID
- Program Unique Identifier String (field mapped in Step 1)
- Cycle
- Association
- List of fields that need to be populated in WebAdMIT custom fields.
The value of the cycle must correspond with the cycle as it appears in WebAdMIT (e.g., "2026 – 2027", with spaces surrounding the dash). Enter the CAS name for the Association field (e.g., PTCAS). The name of the CAS should match the “association” found with the User Identity.
- WebAdMIT custom fields are data type sensitive, so it is important to ensure:
- Numeric fields are mapped to numeric custom fields in WebAdMIT.
- Boolean or bit fields are mapped to Boolean fields in WebAdMIT. Use TRUE/FALSE as the format type.
- Multiple value fields can be mapped to string fields or a select-from-list custom fields in WebAdMIT. If using a multi-select field in WebAdMIT, ensure the drop-down values match all possibilities.
- String (text) fields are mapped to string (text) custom fields in WebAdMIT.
- Date fields are mapped to date custom fields in WebAdMIT; use yyyy-MM-dd as the date format.
- Ensure that the field headers of the export are as follows:
- CASID
- Program Unique Identifier String
- Cycle
- Association
- Custom Field ID Number
- The script expects a CSV (Comma Separated Format) and the file should contain headers. See the WebAdMIT Custom Fields Template for an example file.
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 from Integration Help Center and place it on the windows server meant to host the script.
- On the server, create a folder called CustomFieldsToWebAdMIT.
- Create a sub-folder called Archive.
- Place the Python script and the config.json file in the CustomFieldsToWebAdMIT folder.
- The CSV file must also be dropped in the CustomFieldsToWebAdMIT folder.
- Edit the config.json file in the CustomFieldsToWebAdMIT 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 CustomFieldsToWebAdMIT folder. Note that the directory separations use "/".
- Set file_name to the name of the incoming CSV file.
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
pipinstall pyinstallercommand.
- Run the following command:
pip install requestsand ensure the requests module gets installed correctly. - If pyinstaller and requests installation was successful, in Command Prompt, navigate to the CustomFieldsToWebAdMIT directory.
- Type the following command:
pyinstaller -onefile CustomFields.pyand press enter. - This command converts the script into an executable.
- The executable is found in the \CustomFieldsToWebAdMIT\dist\ folder.
- Copy the config.json file from the CusotmFieldsToWebAdMIT folder to \CustomFieldsToWebAdMIT\dist\ folder.
Testing the Executable
The following should be completed for prelaunch WebAdMIT:
- Navigate to the \CustomFieldsToWebAdMIT\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 CustomFieldsToWebAdMIT\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 into the CustomFieldsToWebAdMIT folder. The file will be picked, processed, and archived by the executable.
- Navigate to the Archive folder under CustomFieldsToWebAdMIT\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 are 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 CAS ID not found in WebAdMIT.
- The 422 status code may indicate a mismatch of data types for the field in your system and custom field in WebAdMIT. It is also the expected status code if the field from the export is null.
- If all rows show a 200 (or 422 for expected null data) for each field, 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 export is incorrect.
- If the data is correctly loaded to the WebAdMIT custom fields, 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 CustomFieldsToWebAdMIT folder.
- Open Command Prompt as an administrator, and within Command Prompt, navigate to CustomFieldsToWebAdMIT\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 "CustomFieldsToWebAdMIT"
"PathTo\CustomFieldsToWebAdMIT\dist\CustomFields.exe" "PathTo\CustomFieldsToWebAdMIT\CustomFields.py"
- If the service is successfully installed, it displays the following message in command prompt: Service "CustomFieldsToWebAdMIT" installed successfully!
- Open services.msc in Windows as an admin and locate the CustomFieldsToWebAdMIT service.
- Start the CustomFieldsToWebAdMIT service.
Testing the CustomFieldstoWebAdMIT Service
- To test the service, navigate to Testing the Executable and perform steps 6 to 14.
- If the test is successful, then stop the CustomFieldsToWebAdMIT 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 CustomFieldsToWebAdMIT\nssm-2.24\win64 (or win32 depending on your Windows server).
- Run the following in Command Prompt:
nssm remove “CustomFieldsToWebAdMIT” - 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 CustomFieldsToWebAdMIT 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 CustomFieldsToWebAdMIT 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 CustomFieldsToWebAdMIT 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 CustomFieldsToWebAdMIT service.
- Drop a CSV file to the CustomFieldsToWebAdMIT folder.
- Check the archived file for status codes for a successful load.
Cycle Over Cycle Changes
Non-Overlapping Cycles
It is important to note that Custom Field IDs in Prelaunch and Production WebAdMIT change cycle to cycle. In preparation for the next cycle, complete these steps:
- Review your custom fields in WebAdMIT and make note of any new custom fields that need to be added.
- Update the custom field IDs following the steps in Retrieving Custom Field IDs in WebAdMIT and configure your export to match accordingly.
- In the export, update the Cycle value to the new years (e.g., "2026 – 2027", with spaces surrounding the dash).
- The CustomFieldsToWebAdMIT 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, a new query and schedule will be required. Complete the following steps to add a new cycle:
- Copy the existing export and update the cycle (e.g., "2026 – 2027", with spaces surrounding the dash).
- Update the custom field IDs following the steps in Retrieving Custom Field IDs in WebAdMIT and configure your export to match accordingly.
- Add a schedule to the new cycleʻs export that runs at a different time than the existing export. The CustomFieldsToWebAdMIT service is looking for a specific file name, and while both queries can export the same file name, they cannot be on the SFTP at the same time without overwriting each other.
- The CustomFieldsToWebAdMIT 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.














