Introduction:
Initially introduced into the system as the 'SF-182 Form', this form was built out to mimic the US Government SF-182 paper-based form. This form was once available at an additional cost (on top of the regular licensing fees) but was added into the system as standard functionality in Q3 2015 (LR-9660). Although this form was made widely available to all customers, no attempt was made by SF to increase the customization capabilities. This resulted in customizations taking much longer than necessary and a form that looks very outdated.
To aid in the configuration process of this form, I have compiled all of the information needed into a single blog (along with some useful tips).
Overview:
In order to visualize how the external learning request process works, a process map is most helpful.
As seen in the graphic above, there are two main components that make up the external learning request process. The first being when the user creates the learning request and submits it for approval, and the second being when the user completes the course and goes back into the system to verify the information and send it off for another approval.
These approval processes are set independently and can be set both system wide (In Global Variables) and more granular (In Assignment Profiles). Note that the processes set at the assignment profile level override the global values. Typically both of these processes include the pm in some way but it will depend on your business needs. Ideally a budget coordinator would be included as there are financial impacts from these external learning engagements.
System Admin > Configuration > Global Variables
Users> Assignment Profiles > Related More > External Request
Note: This post will not go into detail on what can / cannot be done with approval process or how to create them, however, I can provide insights in the comments below.
Getting back to the point I made about this taking a long time, it is due to different labels being used from the admin screen / user screen / reports. It took many hours to find out exactly which label id's go to which particular part of the form so I wanted to save everyone else some time and post it here. If you would like an excel version of the info please provide your email below.
(My) Best Practice:
Assuming that the default form fields do not meet your needs (because if they did why would you be reading this
🙂 ) and extensive customization is needed (which is likely) I have come up with the following steps:
- Gather current external request form details (If available)
- Compare to the default SF external form fields
- Document any gaps
- Discuss if change management can fill any gaps in the form (Changing your needs to match the form instead of changing the form to match your needs).
- If there are still gaps, use the below information to fill them.
Tips for filling gaps recognized in #5 above:
- Compile a list of all of the fields that you will not be using (hidden)
- Taking the data type and form position into consideration, determine which fields can be re-labeled to meet your needs.
- Recognize that there are only a handful of fields that have picklists and use them wisely.
- Understand that the user will see the picklist value id's in the dropdown, and then cannot be localized (best to use numbers instead of words)
- Understand that the picklist values themselves can be localized to different languages.
- Understand that when fields are hidden, the form down not fill the white space with anything (or make the form smaller).
- Take into consideration if multiple currencies will be used within this form (and that the $ sign cannot be hidden or changed).
Admin Screen:
Located in System Admin > Configuration > External Request the configuration options for this are minimal to say the least. Here you have options for configuring instruction text for each section as well as the visibility of most fields and whether or not they are mandatory. The third option, 'Pre-fill' shows for fields that have the ability to be pre-populated when a user creates a request based on the specified user data field. This is useful if your user data supports it, however, from what I have seen there are usually major gaps. The alternative is to not use the pre-fill and the user manually enter the data when creating the request.
Corresponding Labels:
Note: Make sure to update the labels for all locales that are in use.
|
Admin Label |
Label ID |
Pre-fill option |
Data Type |
A |
SECTION A: TRAINEE INFORMATION |
label.SF182.SectionA |
|
|
A |
Agency Code, agency sub element and submitting office number |
label.AgencyCodeSubmittingOfficeNumber |
Y |
Autofilled - Not Editable |
A |
Social Security Number |
label.SocialSecurityNumber |
Y |
Text Box |
A |
Date of Birth |
label.DateOfBirth |
Y |
Text Box / Calendar |
A |
Home Address |
label.HomeAddress |
|
Header |
A |
Street Address |
label.StreetAddress |
|
Text Box |
A |
City |
label.City |
|
Text Box |
A |
State / Province |
label.StateProvince |
|
Text Box |
A |
Postal Code |
label.PostalCode |
|
Text Box |
A |
Country |
label.Country |
|
Text Box |
A |
Home Phone |
label.HomePhone |
|
Text Box |
A |
Position Level |
label.PositionLevel |
|
4 Radio Buttons |
A |
Organization Mailing Address |
label.OrganizationMailingAddress |
|
Header |
A |
Add1 |
label.Add1 |
|
Text Box |
A |
Add2 |
label.Add2 |
|
Text Box |
A |
City |
label.City |
|
Text Box |
A |
State / Province |
label.StateProvince |
|
Text Box |
A |
Postal Code |
label.PostalCode |
|
Text Box |
A |
Office Phone |
label.OfficePhone |
Y |
Text Box |
A |
Work Email Address |
label.WorkEmail |
|
Text Box |
A |
Position Title |
label.PositionTitle |
|
Text Box |
A |
Does applicant need special accommodation? |
label.ApplicantHandicappedDisabled |
|
2 Radio Buttons / Text Box |
A |
Pay Plan |
label.PayPlan |
Y |
Text Box |
A |
Series |
label.Series |
Y |
Text Box |
A |
Grade |
label.Grade |
Y |
Text Box |
A |
Step |
label.Step |
Y |
Text Box |
A |
Type of Appointment |
label.TypeOfAppointment |
Y |
Text Box |
A |
Education Level |
label.EducationLevel |
Y |
Text Box |
B |
SECTION B: TRAINING COURSE DATA |
label.SF182.SectionB |
|
Header |
B |
Name and Mailing Address of Training Vendor |
label.NameMailingAddressTrainingVendor |
|
Header |
B |
Name |
label.NameMailingAddressTrainingVendor |
|
Text Box / Search |
B |
If Other, please specify |
label.IfOtherPleaseSpecify |
|
Radio Button / Text Box |
B |
Street Address |
label.StreetAddress |
|
Text Box |
B |
City |
label.City |
|
Text Box |
B |
State / Province |
label.StateProvince |
|
Text Box |
B |
Postal Code |
label.PostalCode |
|
Text Box |
B |
Country |
label.Country |
|
Text Box |
B |
Vendor Telephone Number |
label.VendorTelNumber |
|
Text Box |
B |
Vendor Email Address |
label.VendorEmail |
|
Text Box |
B |
Location of Training Site |
label.LocationOfTrainingSite |
|
Header |
B |
If Same, mark box |
label.IfSameMarkBox |
|
Radio Button |
B |
Street Address |
label.StreetAddress |
|
Text Box |
B |
City |
label.City |
|
Text Box |
B |
State / Province |
label.StateProvince |
|
Text Box |
B |
Postal Code |
label.PostalCode |
|
Text Box |
B |
Country |
label.Country |
|
Text Box |
B |
Course Title and Training Objectives (benefits to be derived by the Organization) |
label.CourseTitleTrainingObjectives |
|
Header |
B |
Course Title |
label.ActivityTitle |
|
Text Box |
B |
Course Objectives |
label.CourseObjectives |
|
Text Box |
B |
Course Number Code |
label.CourseNumberCode |
|
Text Box |
B |
Training Period |
label.TrainingPeriod |
|
Header |
B |
Start |
label.Start |
|
Text Box / Calendar |
B |
Complete |
label.Complete |
|
Text Box / Calendar |
B |
Number Of Course Hours |
label.NumberOfCourseHours |
|
Header |
B |
During Duty |
label.DuringDuty |
|
Text Box |
B |
Non Duty |
label.NonDuty |
|
Text Box |
B |
Training Codes |
label.TrainingCodes |
|
Header |
B |
Purpose |
label.Purpose |
|
Picklist |
B |
Type |
label.Type |
|
Text Box |
B |
Sub Type |
label.TrainingSubTypeCode |
|
Picklist |
B |
Delivery Type |
label.TrainingDeliveryType |
|
Picklist |
B |
Designation Type |
label.TrainingDesignationType |
|
Picklist |
B |
Source |
label.Source |
|
Picklist |
B |
Training Credit |
label.TrainingCreditHours |
|
Text Box |
B |
Credit Type |
label.CreditType |
|
Picklist |
B |
Training Accreditation Indicator |
label.TrainingAccreditationIndicator |
|
2 Radio Buttons |
B |
Continued Service Agreement Required Indicator |
label.ContinuedServiceAgreementRequiredIndicator |
2 Radio Buttons |
B |
Continued Service Agreement Required Expiration Date |
label.ContinueServiceAgreementExpirationDate |
|
Text Box / Calendar |
B |
Agency Use Only |
label.AgencyUse |
|
Text Box |
C |
SECTION C: COSTS AND BILLING INFORMATION |
label.SF182.SectionC |
|
Header |
C |
Direct Cost and appropriation/fund chargeable |
label.DirectCostAppropriationFund |
|
Header |
C |
Tuition - Amount |
label.Tuition |
|
Text Box |
C |
Tuition - Amount |
label.Amount |
|
Text Box |
C |
Tuition - Appropriation Fund |
label.Tuition |
|
Text Box |
C |
Tuition - Appropriation Fund |
label.AppropriationFund |
|
Text Box |
C |
Books or Materials - Amount |
label.BooksMaterials |
|
Text Box |
C |
Books or Materials - Amount |
label.Amount |
|
Text Box |
C |
Books or Materials - Appropriation Fund |
label.BooksMaterialsAppropriationFund |
|
Text Box |
C |
Indirect Cost and appropriation/fund chargeable |
label.IndirectCostAppropriationFund |
|
Header |
C |
Travel - Amount |
label.Travel |
|
Text Box |
C |
Travel - Amount |
label.Amount |
|
Text Box |
C |
Travel - Appropriation Fund |
label.Travel |
|
Text Box |
C |
Travel - Appropriation Fund |
label.AppropriationFund |
|
Text Box |
C |
Per Diem - Amount |
label.PerDiem |
|
Text Box |
C |
Per Diem - Amount |
label.Amount |
|
Text Box |
C |
Per Diem - Appropriation Fund |
label.PerDiemAppropriationFund |
|
Text Box |
C |
Total Training Non-Government Contribution Cost |
label.TotalTrainingNonGovtContributionCost |
|
Text Box |
C |
Document / Purchase Order / Requisition Number |
label.Document |
|
Text Box |
C |
Document / Purchase Order / Requisition Number |
label.PurchaseOrder |
|
Text Box |
C |
Document / Purchase Order / Requisition Number |
label.RequisitionNo |
|
Text Box |
C |
8-Digit Station Symbol |
label.8DigitStationSymbol |
|
Text Box |
C |
Billing Instructions |
label.BillingInstructions |
|
Large Text Box |
User Screen:
In addition to the approval process configuration, you also need to make sure that the user has access to the External Request button listed in the 'Tools' tile. The only workflow related to this is labeled 'Access External Learning Requests' and you need to make sure this is added to the user role that the user is assigned.
Once this is done the user will have the option shown below:
Creating a new request:
Default Request Form
Assuming you followed this guide and changed the admin labels to match your requirements first, you now need to mimic the changes onto the actual form that the user sees. All of the label id's needed are listed below.
Corresponding Labels:
Note: Make sure to update the labels for all locales that are in use.
Label |
Label ID |
Agency Code, agency sub element and submitting office number |
label.AgencyCodeSubmittingOfficeNumber |
Last Name |
---------- |
First Name |
---------- |
Middle Initial |
---------- |
First Five Letters of Last Name |
---------- |
Social Security Number |
label.SocialSecurityNumber |
Date of Birth |
label.DateOfBirth |
Street Adress |
label.StreetAddress |
City |
label.City |
State / Province |
label.StateProvince |
Postal Code |
label.PostalCode |
Country |
label.Country |
Home Phone |
label.HomePhone |
Position Level |
label.PositionLevel |
Add1 |
label.Add1 |
Add2 |
label.Add2 |
City |
label.City |
State / Province |
label.StateProvince |
Postal Code |
label.PostalCode |
Office Phone |
label.OfficePhone |
Work Email Address |
label.WorkEmail |
Position Title |
label.PositionTitle |
Does applicant need special accommodation? |
label.ApplicantHandicappedDisabled |
Type of Appointment |
label.TypeOfAppointment |
Education Level |
label.EducationLevel |
Pay Plan |
label.PayPlan |
Series |
label.Series |
Grade |
label.Grade |
Step |
label.Step |
|
|
Name |
label.NameMailingAddressTrainingVendor |
If Other, please specify |
label.IfOtherPleaseSpecify |
Street Address |
label.StreetAddress |
City |
label.City |
State / Province |
label.StateProvince |
Postal Code |
label.PostalCode |
Country |
label.Country |
Vendor Telephone Number |
label.VendorTelNumber |
Vendor Email Address |
label.VendorEmail |
If Same, mark box |
label.IfSameMarkBox |
Street Address |
label.StreetAddress |
City |
label.City |
State / Province |
label.StateProvince |
Postal Code |
label.PostalCode |
Country |
label.Country |
Course Title |
label.CourseTitle |
Course Number Code |
label.CourseNumberCode |
Training Start Date |
label.TrainingStartDate |
Training End Date |
label.TrainingCompleteDate |
Training Duty Hours |
label.TrainingDutyHours |
Training Non-Duty Hours |
label.TrainingNonDutyHours |
Training Purpose |
label.TrainingPurposeType |
Training Type Code |
label.TrainingTypeCode |
Training Sub Type Code |
label.TrainingSubTypeCode |
Training Delivery Type Code |
label.TrainingDeliveryTypeCode |
Training Designation Type Code |
label.TrainingDesignationTypeCode |
Training Credit |
label.TrainingCreditHours |
Training Credit Type Code |
label.TrainingCreditTypeCode |
Training Accreditation Indicator |
label.TrainingAccreditationIndicator |
Continued Service Agreement Required Indicator |
label.ContinuedServiceAgreementRequiredIndicator |
Continued Service Agreement Required Expiration Date |
label.ContinueServiceAgreementExpirationDate |
Training Source Type Code |
label.TrainingCodeSource |
Training Objectives |
label.TrainingObjectives |
Agency Use Only |
label.AgencyUse |
|
|
Direct Cost and appropriation/fund chargeable |
label.DirectCostAppropriationFund |
Tuition - Amount |
label.Tuition |
Tuition - Amount |
label.Amount |
Tuition - Appropriation Fund |
label.Tuition |
Tuition - Appropriation Fund |
label.AppropriationFund |
Books or Materials - Amount |
label.BooksMaterials |
Books or Materials - Amount |
label.Amount |
Books or Materials - Appropriation Fund |
label.BooksMaterialsAppropriationFund |
Indirect Cost and appropriation/fund chargeable |
label.IndirectCostAppropriationFund |
Travel - Amount |
label.Travel |
Travel - Amount |
label.Amount |
Travel - Appropriation Fund |
label.Travel |
Travel - Appropriation Fund |
label.AppropriationFund |
Per Diem - Amount |
label.PerDiem |
Per Diem - Amount |
label.Amount |
Per Diem - Appropriation Fund |
label.PerDiemAppropriationFund |
Total Training Non-Government Contribution Cost |
label.TotalTrainingNonGovtContributionCost |
Document / Purchase Order / Requisition Number |
label.Document / label.PurchaseOrder / label.RequisitionNo |
8-Digit Station Symbol |
label.8DigitStationSymbol |
Billing Instructions |
label.BillingInstructions |
Reporting:
The 'External Request Data' report is an out-of-the-box report, which is available in multiple formats (CSV, HTML, PDF). If any label changes are made to the user or admin screens, you will most likely need to update the labels that are being pulled into the report header section. In order to aide this process, I have created a list of these report header values along with their respective label id.
Corresponding Labels:
Note: Make sure to update the labels for all locales that are in use.
Label |
Label ID |
User Name |
---------- |
User ID |
---------- |
Social Security Number |
label.SocialSecurityNumber |
Date of Birth |
label.DateOfBirth |
Vendor Name |
label.VendorName |
Course Title |
label.ActivityTitle |
Course Objectives |
label.CourseObjectives |
Start Date |
label.StartDate |
Complete Date |
label.CompleteDate |
Training Purpose |
label.TrainingPurpose |
Training Source |
label.TrainingSource |
Training Type |
label.TrainingType |
Training Sub-type |
label.TrainingSubType |
Training Delivery |
label.TrainingDelivery |
Training Designation |
label.TrainingDesignation |
Training Credit Type |
label.TrainingCreditType |
Training Accreditation Required Indicator |
label.TrainingAccreditationRequiredIndicator |
Continued Service Agreement Required Indicator |
label.ContinuedServiceAgreementRequiredIndicator |
Continued Service Agreement Required Indicator Expiration Date |
label.ContinuedServiceAgreementIndicatorExpirationDate |
Position Level |
label.PositionLevel |
Office Phone |
label.OfficePhone |
Personal Email Address |
label.PersonalEmailAddress |
Position Title |
label.PositionTitle |
Handicapped or Disabled |
label.handicappedOrDisabled |
Disability Description |
label.DisabilityDescription |
Pay Plan |
label.PayPlan |
Series |
label.Series |
Grade |
label.Grade |
Step |
label.Step |
Type of Appointment |
label.TypeOfAppointment |
Education Level |
label.EducationLevel |
Vendor Mailing Address - Street |
label.VendorMailingAddressStreet |
Vendor Mailing Address - City |
label.VendorMailingAddressCity |
Vendor Mailing Address- State/Province |
Vendor Mailing Address- State/Province |
Vendor Mailing Address - Postal Code |
label.VendorMailingAddressPostalCode |
Vendor Mailing Address - Country |
Vendor Mailing Address - Country |
Vendor Email Address |
label.VendorPersonalEmailAddress |
Vendor Training Site Address - Street |
label.VendorTrainingSiteAddressStreet |
Vendor Training Site Address - City |
label.VendorTrainingSiteAddressCity |
Vendor Training Site Address- State/Province |
label.VendorTrainingSiteAddressStateProvince |
Vendor Training Site Address - Postal Code |
label.VendorTrainingSiteAddressPostalCode |
Vendor Training Site Address - Country |
label.VendorTrainingSiteAddressCountry |
Direct Cost Tuition Amount |
label.DirectCostTuitionAmount |
Direct Cost Books/Materials Amount |
label.DirectCostBooksMaterialAmount |
Direct Cost Total |
label.DirectCostTotal |
Indirect Cost Travel Amount |
label.IndirectCostTravelAmount |
Indirect Cost Per Diem Amount |
label.IndirectCostPerDiemAmount |
Indirect Cost Total |
label.IndirectCostTotal |
Direct Cost Tuition Fund |
label.DirectCostTuitionFund |
Direct Cost Books/Materials Fund |
label.DirectCostBooksMaterialFund |
Indirect Cost Travel Fund |
label.IndirectCostTravelFund |
Indirect Cost Per Diem Fund |
label.IndirectCostPerDiemFund |
Total Training Non-Government Contribution Cost |
label.TotalTrainingNonGovtContributionCost |
Useful FAQ:
https://launchpad.support.sap.com/#/notes/2327231/E