Skip to main content

Return to TX Community

Liaison

App Tracker Upgrade

This section is only for those institutions using the App Tracker tool.

Step 1 - Record the Current Package Version 

​Before upgrading,  find and record your currently installed version:

  1. Navigate to Setup > Installed Packages
  2. Search for TargetX Application Tracker
  3. Record your current version number

Note: ​If your current version is 2402.0you are on the most recent package and should proceed to Prospect Scoring Upgrade.

Step 2 - Choose an Upgrade Path  

  App Tracker is an unmanaged package. You have two options to upgrade the App Tracker package:  

  • Option 1: Delete and Reinstall App Tracker 
  • Option 2: Manually add the code changes via a Change Set

Upgrade Path Option 1:  Delete and Reinstall App Tracker

With this option, you will need to Uninstall the existing App Tracker package and install the latest package. You will need to reapply any customizations you had previously applied. 

Tip: Take screenshots, or copy them to Notepad, to document your page names/assignments before uninstalling App Tracker.

Item 1: Uninstall App Tracker Package 
  1. Navigate to Setup and search for Sites.
  2. Click the AppTracker site.
  3. Change the Active Site Home Page to In Maintenance.
  4. Uninstall the App Tracker Package.
Item 2: Install the Upgraded Package
  1. To obtain package links and passwords, please see the TargetX Online App: Admin Group.  
  2. Choose “Install for Admins Only”. If additional security is required, please update the appropriate Profiles.  

Released Version  

TargetX App Tracker 2402.0 (February ‘24)  

Prerequisites  

TargetX Recruitment Manager 2402.3

Item 3: Update the Active Site Home Page
  1. Navigate to Setup and search for Sites.
  2. Click the AppTracker site.
  3. Change the Active Site Home Page for the AppTracker site to AppTrackerLanding.

Upgrade Path Option 2: Manually add the code changes via a Change Set

If you completed all the steps for Upgrade Path Option 1, you do not need to complete the following changes. With Option 2, you do not install a new package but manually apply the latest changes to the unmanaged package using the information below. If you choose this option, you must complete the steps in a sandbox environment before pushing to production via an Outbound Change Set.

Your starting package version number determines what, if any, additional configuration steps may be required. Please click the link for your initial version number (identified in Step 1 above) from the list below. You will be directed to the first step required for your upgrade and should complete all steps that follow. If you do not see your version number listed, please get in touch with the TargetX Support team. 

Starting Version

This is the version you currently have installed, as Identified in Step 1.

Ending Version

This is the upgrade you are installing, as selected in Step 2. 

Configuration Steps by Release

These are the steps you need to complete, from the starting version to the ending version. For example, if your starting version is 2205.0 (May '22) and you're upgrading to 2208.6 (August '22), you'll need to complete the configuration steps for 2206.3 (June '22), 2207.0 (July '22), and 2208.6 (August '22). 

1912.1 2402.0

Item 1: Replace the Application Tracker visualforce page

You need to replace the contents of the AppTracker visualforce page:

  1. Navigate to Setup and search for Visualforce Pages.
  2. Edit the AppTracker page.
  3. Replace the contents with the following or use this link AppTracker.page:
<apex:page controller="TargetX_SRMb.AppTrackerController" showHeader="FALSE" cache="false" expires="0" standardStylesheets="true">
<head>
    <apex:stylesheet value="{!$Resource.AppTrackerStyles}" />
    <style>
        #header { 
            background: url('{!$Resource.AppTrackerHeaderBG}');
            height: 120px;
        }
    </style>
</head>


<body>
    <apex:outputText value="{!application.TargetX_SRMb__Contact__c}" rendered="false"/>
    <div id="container">
        <apex:include pageName="AppTrackerHeader"/>
        <apex:pageMessages />
        <apex:outputPanel rendered="{!accessError}">
            <h1>Unauthorized</h1>
            <div style="margin:10px 0px">
            <TargetX_Base:AccessKeyButton setting="App Tracker" contactId="{!Contact.Id}" buttonText="Send Email"/>
            </div>
        </apex:outputPanel>
        <apex:outputPanel rendered="{!NOT(accessError)}">
             <div class="clear">&nbsp;</div>
            <div id="leftSide">
                <h1>Student Information</h1>


                <p>{!LEFT(contact.FirstName, 1)}. {!contact.LastName}</p>
                <p>{!Contact.MailingCity}
                <apex:outputText value=", " rendered="{!NOT(OR(ISNULL(Contact.MailingState),ISNULL(Contact.MailingCity)))}"/>
                {!Contact.MailingState}</p>
                <apex:repeat value="{!contact_fs}" var="field">
                    <p>
                        <apex:outputText value="{!Contact[field.fieldPath]}"/>
                    </p>
                </apex:repeat>
                <p>&nbsp;</p> 


                <apex:outputPanel rendered="{!NOT(ISNULL(owner))}">
                    <h1>Admission Contact</h1>
                    <p>{!owner.Name}</p>
                    <p>{!owner.Phone}</p>
                    <p>{!owner.Email}</p>
                    <apex:repeat value="{!users_fs}" var="field">
                        <p> {!owner[field.fieldPath]} </p>
                    </apex:repeat>
                </apex:outputPanel>
            </div><!-- leftSide -->
            <div id="rightSide">
                <h1>Application Details</h1>
              
                <p><b>Date Received:</b>&nbsp;
                <apex:outputText value="{0,date,MM'/'dd'/'yyyy}">
                    <apex:param value="{!application.CreatedDate}" /> 
                </apex:outputText></p>
                <p><b>Start Term:</b>&nbsp;<apex:outputText value="{!application.TargetX_SRMb__Start_Term__c}"/>&nbsp;
                    <apex:outputText value="{!application.TargetX_SRMb__Start_Term_Year__c}"/></p>
                <p><b>Program:</b>&nbsp;
                    <apex:OutputField value="{!application.TargetX_SRMb__Possible_Academic_Major__c}"/>
                </p>
                <p><b>Student Type:</b>&nbsp;
                    <apex:OutputField value="{!application.TargetX_SRMb__Student_Type__c}"/></p>
                <p><b>Housing:</b>&nbsp;<apex:OutputField value="{!application.TargetX_SRMb__Housing__c}"/></p>
                <p>&nbsp;</p>
                <p><b>Status:</b>&nbsp;
                    <apex:OutputField value="{!application.TargetX_SRMb__Decision_Display_Value__c}"/></p>
                <apex:repeat value="{!application_fs}" var="field">
                    <p><b>{!field.label}:</b>&nbsp;
                        <apex:outputText value="{!application[field.fieldPath]}"/>
                    </p>
                </apex:repeat>


            </div><!-- rightSide -->
            <div class="clear">&nbsp;</div>
            <div id="checklist" style="width:100%;">
                <p>Application Requirements</p>
                <apex:outputLink styleClass="navLink" rendered="{!showLink}" value="{!$Page.AppTrackerLanding}?id={!contact.id}&k={!$CurrentPage.parameters.k}">Back to All Applications View</apex:outputLink>
                <apex:outputText styleClass="navLink" rendered="{!showLink}" value=" | "/>
                <apex:outputLink styleClass="navLink" value="{!$Page.AppTrackerDetails}?id={!application.Id}&k={!$CurrentPage.parameters.k}">Go To Detail View</apex:outputLink>
                <div style="margin:5px 0px">
                </div>
                <apex:pageBlock >
                    <h1 class="infoHover">Pending</h1>
                    <div class="clear" style="margin-bottom: 4px">&nbsp;</div>
                    <apex:pageBlockTable value="{!Activities}" var="details" title="Checklist Items" >


                        <apex:column headerValue="" width="2%">
                            <div class="tooltip" style="display:inline">
                                <apex:image url="{!IF(ISBLANK(details.TargetX_SRMb__Description__c),"",$Resource.apptracker_comments_icon)}" width="{!IF(ISBLANK(details.TargetX_SRMb__Description__c), 0, 20)}" height="{!IF(ISBLANK(details.TargetX_SRMb__Description__c), 0, 20)}"/>
                                <span>{!IF(ISBLANK(details.TargetX_SRMb__Description__c),"",details.TargetX_SRMb__Description__c)}</span>
                            </div>
                        </apex:column>


                        <apex:column headerValue="Item">
                            {!details.name}
                        </apex:column>


                        <apex:column headerValue="Status">
                            {!details.TargetX_SRMb__Status__c}
                        </apex:column>


                        <apex:repeat value="{!checklist_fs}" var="field">
                            <apex:column headerValue="{!field.label}">
                                {!details[field.fieldPath]}
                            </apex:column>
                        </apex:repeat>
                    </apex:pageBlockTable>
                    <br />
                    <h1 class="infoHover">Collected Materials</h1>
                    <div class="clear" style="margin-bottom: 4px">&nbsp;</div>
                    <apex:pageBlockTable value="{!closedActivities}" var="item" title="Checklist Items" >
                         <apex:column headerValue="" width="2%">
                            <div class="tooltip" style="display:inline">
                                <apex:image url="{!IF(ISBLANK(item.TargetX_SRMb__Description__c),"",$Resource.apptracker_comments_icon)}" width="{!IF(ISBLANK(item.TargetX_SRMb__Description__c), 0, 20)}" height="{!IF(ISBLANK(item.TargetX_SRMb__Description__c), 0, 20)}"/>
                                <span>{!IF(ISBLANK(item.TargetX_SRMb__Description__c),"",item.TargetX_SRMb__Description__c)}</span>
                            </div>
                        </apex:column>


                        <apex:column headerValue="Item">
                            {!item.name}
                        </apex:column>
                        <apex:column headerValue="Status">
                            {!item.TargetX_SRMb__Status__c}
                        </apex:column>
                        <apex:repeat value="{!checklist_fs}" var="field">
                            <apex:column headerValue="{!field.label}">
                                {!item[field.fieldPath]}
                            </apex:column>
                        </apex:repeat>
                    </apex:pageBlockTable>
                </apex:pageBlock>
            </div>
        </apex:outputPanel>
        <div id="footer"><apex:include pageName="AppTrackerFooter"/></div>
    </div><!-- container -->
</body>
<style>
    div.tooltip {
    <!-- width: 195px; -->
    width: 40%;
    float: left;
    }
    div.tooltip:hover {
    background: #ffffff;
    text-decoration: none;
    } /*BG color is a must for IE6*/
    div.tooltip span {
    display: none;
    padding: 2px 3px;
    margin-left: 8px;
    <!-- width: 195px; -->
    width: 40%;
    }
    div.tooltip:hover span {
    display: inline;
    position: absolute;
    border: 1px solid #cccccc;
    background: #FFC;;
    color: #000000;
    }
</style>
</apex:page>

Item 2: Replace AppTrackerDetails visualforce page

You need to replace the contents of the AppTrackerDetails visualforce page:

  1. Navigate to Setup and search for Visualforce Pages.
  2. Edit the AppTrackerDetails page.
  3. Replace the contents with the following, or use this link AppTrackerDetails.page
<apex:page controller="TargetX_SRMb.AppTrackerController" showHeader="FALSE" cache="false" expires="0" standardStylesheets="true">
<head>
    <apex:stylesheet value="{!$Resource.AppTrackerStyles}" />
    <style>
        #header { 
            background: url('{!$Resource.AppTrackerHeaderBG}');
            height: 120px;
        }
    </style>
</head>
 
<body>
    <apex:outputText value="{!application.TargetX_SRMb__Contact__c}" rendered="false"/>
    <div id="container">
        <apex:include pageName="AppTrackerHeader"/>
        <apex:pageMessages />
        <apex:outputPanel rendered="{!accessError}">
            <h1>Unauthorized</h1>
            <div style="margin:10px 0px">
                   <TargetX_Base:AccessKeyButton setting="App Tracker" contactId="{!Contact.Id}" buttonText="Send Email"/>
            </div>
        </apex:outputPanel>
        <apex:outputPanel rendered="{!NOT(accessError)}">
            <div id="leftSide">
                <h1>Student Information</h1>
                <p>{!LEFT(contact.FirstName, 1)}. {!contact.LastName}</p>
                <p>{!Contact.MailingCity}
                <apex:outputText value=", " rendered="{!NOT(OR(ISNULL(Contact.MailingState),ISNULL(Contact.MailingCity)))}"/>
                {!Contact.MailingState}</p>
                <apex:repeat value="{!contact_fs}" var="field">
                    <p>
                      <apex:outputText value="{!Contact[field.fieldPath]}"/>
                    </p>
                </apex:repeat>
                <p>&nbsp;</p>
                <apex:outputPanel rendered="{!NOT(ISNULL(owner))}">
                    <h1>Admission Contact</h1>
                    <p>{!owner.Name}</p>
                    <p>{!owner.Phone}</p>
                    <p>{!owner.Email}</p>
                    <apex:repeat value="{!users_fs}" var="field">
                        <p> {!owner[field.fieldPath]} </p>
                    </apex:repeat>
                </apex:outputPanel>
            </div><!-- leftSide -->
            <div id="rightSide">
                <h1>Application Details</h1>
 
                <p><b>Date Received:</b>&nbsp;
                <apex:outputText value="{0,date,MM'/'dd'/'yyyy}">
                    <apex:param value="{!application.CreatedDate}" /> 
                </apex:outputText></p>
                <p><b>Start Term:</b>&nbsp;<apex:outputText value="{!application.TargetX_SRMb__Start_Term__c}"/>&nbsp;
                    <apex:outputText value="{!application.TargetX_SRMb__Start_Term_Year__c}"/></p>
                <p><b>Program:</b>&nbsp;
                    <apex:OutputField value="{!application.TargetX_SRMb__Possible_Academic_Major__c}"/>
                </p>
                <p><b>Student Type:</b>&nbsp;
                    <apex:OutputField value="{!application.TargetX_SRMb__Student_Type__c}"/></p>
                <p><b>Housing:</b>&nbsp;<apex:OutputField value="{!application.TargetX_SRMb__Housing__c}"/></p>
                <p>&nbsp;</p>
                <p><b>Status:</b>&nbsp;
                    <apex:OutputField value="{!application.TargetX_SRMb__Decision_Display_Value__c}"/></p>
                <apex:repeat value="{!application_fs}" var="field">
                    <p><b>{!field.label}:</b>&nbsp;
                        <apex:outputText value="{!application[field.fieldPath]}"/>
                    </p>
                </apex:repeat>
                <!--
                <p><b>Date Received:</b>&nbsp;
                <apex:outputText value="{0,date,MM'/'dd'/'yyyy}">
                    <apex:param value="{!application.CreatedDate}" /> 
                </apex:outputText></p>
                <p><b>Start Term:</b>&nbsp;<apex:outputText value="{!application.TargetX_SRMb__Start_Term__c}"/>&nbsp;
                    <apex:outputText value="{!application.TargetX_SRMb__Start_Term_Year__c}"/></p>
                <p><b>Program:</b>&nbsp;
                    <apex:OutputField value="{!application.TargetX_SRMb__Possible_Academic_Major__c}"/>
                </p>
                <p><b>Student Type:</b>&nbsp;
                    <apex:OutputField value="{!application.TargetX_SRMb__Student_Type__c}"/></p>
                <p><b>Housing:</b>&nbsp;<apex:OutputField value="{!application.TargetX_SRMb__Housing__c}"/></p>
                <p>&nbsp;</p>
                <p><b>Status:</b>&nbsp;
                    <apex:OutputField value="{!application.TargetX_SRMb__Decision_Display_Value__c}"/></p>-->
            </div><!-- rightSide -->
            <div class="clear">&nbsp;</div>
            <div id="checklist" style="width:100%;">
                <p>Item Summary</p><apex:outputLink styleClass="navLink" value="{!$Page.AppTracker}?id={!application.Id}&k={!$CurrentPage.parameters.k}">Go To Task View</apex:outputLink>
                <div style="margin:5px 0px">
                </div>
                <apex:pageBlock title="Enrollment History" rendered="{!showEnrollment}">
                    <apex:pageBlockTable value="{!contact.TargetX_SRMb__Enrollment_History__r}" var="enroll">
                        <apex:column headerValue="School Name" value="{!enroll.TargetX_SRMb__Account__r.Name}"/>
                        <apex:column headerValue="Official Transcripts Received" value="{!enroll.TargetX_SRMb__Official_Transcripts_Received__c}"/>
                        <apex:repeat value="{!history_fs}" var="field">
                             <apex:column headerValue="{!field.label}" value="{!enroll[field.fieldPath]}"/>
                        </apex:repeat>
                    </apex:pageBlockTable>
                </apex:pageBlock>
                <apex:pageBlock title="Recommendations" rendered="{!showRecommendation}">
                    <apex:pageBlockTable value="{!application.TargetX_SRMb__Recommendation__r}" var="rec">
                        <apex:column headerValue="Name of Recommender" value="{!rec.Name}"/>
                        <apex:column headerValue="Recommendation Status" value="{!rec.TargetX_SRMb__Status__c}"/>
                        <apex:column headerValue="Last Modified" value="{!rec.LastModifiedDate}"/>
                        <apex:repeat value="{!recs_fs}" var="field">
                            <apex:column headerValue="{!field.label}" value="{!rec[field.FieldPath]}"/>
                        </apex:repeat>
                    </apex:pageBlockTable>
                </apex:pageBlock>
                <apex:pageBlock title="Essays/Resumes" rendered="{!showEssay}">
                    <apex:pageBlockTable value="{!application.TargetX_SRMb__Essays__r}" var="essay">
                        <apex:column headerValue="Essay Title" value="{!essay.Name}"/>
                        <apex:column headerValue="Received Date" value="{!essay.CreatedDate}"/>
                        <apex:repeat value="{!essays_fs}" var="field">
                            <apex:column headerValue="{!field.label}" value="{!essay[field.FieldPath]}"/>
                        </apex:repeat>
                    </apex:pageBlockTable>
                </apex:pageBlock>
                <apex:pageBlock title="Tests" rendered="{!showTest}">
                    <apex:pageBlockTable value="{!contact.TargetX_SRMb__Test__r}" var="test">
                        <apex:column headerValue="Test Type" value="{!test.TargetX_SRMb__Test__c}"/>
                        <apex:column headerValue="Test Date" value="{!test.TargetX_SRMb__Test_Date__c}"/>
                        <apex:column headerValue="Official Scores Received" value="{!test.TargetX_SRMb__Score_Validated__c}"/>
                        <apex:repeat value="{!test_fs}" var="field">
                             <apex:column headerValue="{!field.label}" value="{!test[field.fieldPath]}"/>
                        </apex:repeat>
                    </apex:pageBlockTable>
                </apex:pageBlock>
            </div>
            <div id="footer">
                <apex:include pageName="AppTrackerFooter"/>
            </div>
        </apex:outputPanel>
    </div><!-- container -->
</body></apex:page>
Item 4: Test the Changes in Your Sandbox
Item 5: Create an Outbound Change Set
  1. Navigate to Setup and search for Outbound Change Sets.
  2. Select New.
  3. Name the Change Set, for example, App Tracker Upgrade February '24.
  4. Add a Description and Save your changes.
  5. In the Change Set Components section, select Add.
  6. Select a Component Type of Visualforce Page.
  7. Click the checkboxes for the following components:
  • AppTracker
  • AppTrackerDetails
  1. Click Add to Change Set.
Item 6: Upload your Change Set
  1. From the Change Set, you created above, select the Org to which you want to send the Change Set.
  2. Click Upload.

Note: Uploading the Change Set will send it to the Target Org; it will NOT make changes in your production Org until you Deploy the Change Set.

Item 7: Validate the Change Set in your Production Org 
  1. Login to your production Org.
  2. Navigate to Setup and search for Inbound Change Sets.
  3. The Change Set you uploaded should be available under Change Sets Awaiting Deployment.
  4. Click the Change Set you want to deploy.
  5. Click Validate.
Item 8: Deploy the Change Set in your Production Org 
  1. Login to your production Org.
  2. Navigate to Setup and search for Inbound Change Sets.
  3. The Change Set you uploaded should be available under Change Sets Awaiting Deployment.
  4. Click the Change Set you want to deploy.
  5. Click Deploy. For additional information on deploying Change Sets, please see Salesforce Help & Training article "Deploying a Change Set"
Item 9: Your upgrade is complete 

No further configuration is required. You may proceed to Prospect Scoring Upgrade.

 

  • Was this article helpful?