It’s very common for businesses to show or hide applications
for certain responsibilities. This may be due to data security/privacy concerns
OR to enable role separations in larger organizations. For example, a typical organizational
practice for hiring managers to access qualified applications ONLY and hide dis-qualified/active
applications, whereas, recruiters can view and manage all applications. This blog post will discuss how to address such requirements
in iRecruitment.
Basics First:
Let's say, a candidate is registered and applied for open
vacancies in iRecruitment portal. His/her personal details will be stored on person
record of type "Applicant" and assignment is created for tracking application
details such as application status - say change from active application to qualified
or hire or rejection or work preferences or questionnaire responses. Application details can also be visible in core forms, using person form -> Others button -> Applications.
Seeded assignment statuses may not always be sufficient for organizational
needs and new statuses are created using "Assignment Statuses" screen. Multiple
user statuses can be mapped to one external or system status. External statuses
are visible to applicants, whereas system statuses are used by iRec to enable
certain features.
Just for our discussion today, let's assume the following
statuses.
And assume a test applicant, who applied for 3 different
vacant positions. One of the applications is qualified, second one is
disqualified and third one is still under consideration.
Approach-1: Restriction based on Security Profile
Hiring manager for asset specialist vacancy in the above
example, should be able to see the applicant's details/work
preferences/questionnaire responses for this vacancy ONLY and don't need to
know about the other 2 applications. Security Profile can be used to apply this
restriction. This approach will completely hide the application info from
vacancy search and view candidate details page (applications sub tab).
- To activate security profile, the following
profile options should be set first.
Profile Option
|
Value
|
Level
|
HR: Enable RTM Security
|
No
|
Responsibility
|
IRC: Show Applications
|
Restrict On Assignment Security
|
Responsibility
|
HR: Security Profile
|
Select the security profile from
the list
|
Responsibility
|
- Next, navigate to HRMS Manager -> Security
-> Profile form and create a new/edit existing security profile as per
options shown below. Don't forget to select "Restrict" applicants and check the
box that says, "Restrict on Individual Assignments".
ASSIGNMENT.assignment_status_type_id in
(SELECT irc.assignment_status_type_id
FROM
irc_assignment_statuses irc,
per_assignment_status_types past
WHERE
irc.assignment_id = ASSIGNMENT.assignment_id
AND
irc.assignment_status_type_id = past.assignment_status_type_id
AND
UPPER(past.user_status) NOT IN ('ACTIVE APPLICATION', 'APPLICANT NOT QUALIFIED')
AND
assignment_status_id =
(SELECT MAX(assignment_status_id)
FROM irc_assignment_statuses
WHERE assignment_id = irc.assignment_id) )
If the additional clause in "Custom Security" tab is valid,
it is automatically incorporated in a SQL select statement that system
generates to restrict access to records, based on the restrictions you have set
up in the other tabbed regions. The list of employees, contingent workers, and
applicants specified by these other restrictions is therefore further
restricted by the custom restriction. The clause fits into the system-generated statement in the
following way (this statement is not visible on screen):
SELECT
1
FROM
per_all_assignments_f ASSIGNMENT,
per_all_people_f PERSON,
per_person_type_usages_f PERSON_TYPE
WHERE
assignment.assignment_id =:asg_id
AND
:effective_date BETWEEN ASSIGNMENT.effective_start_date
AND ASSIGNMENT.effective_end_date
AND
PERSON.person_id=ASSIGNMENT.person_id
AND
:effective_date BETWEEN PERSON.effective_start_date
AND PERSON.effective_end_date
AND
PERSON.person_id=PERSON_TYPE.person.id
AND
:effective_date BETWEEN PERSON_TYPE.effective_start_date
AND
PERSON_TYPE.effective_end_date
AND {your
custom where clause fragment goes here}
- Run the program "Security List Maintenance" for
this specific security profile
Security Profile should be activated now. Screenshot of candidate
details page before restriction.
Candidate details page after restriction
Approach-2: Restriction by modifying seeded
instance set
This method can be used to restrict the view/search on "Applications
by Vacancy" page. It won't work for restricting in Candidate Details page.
iRec has a seeded grant that includes object instance set "Instance set to Restrict Applicant Search".
This can be changed to add predicate condition using "Functional Developer" -> Security -> Objects and query for "Object to Restrict Applicant Search",
go to "Object Instance Sets" sub tab.
(
(fnd_global.RESP_NAME = 'IRC Hiring Manager'
AND
HR_GENERAL.get_user_status(&TABLE_ALIAS.assignment_status_type_id)
in ('Applicant Qualified')
)
OR
(fnd_global.RESP_NAME <> 'IRC Hiring Manager'
AND
&TABLE_ALIAS.PER_SYSTEM_STATUS in
('ACTIVE_APL','TERM_APL','OFFER','INTERVIEW1','INTERVIEW2','ACCEPTED','ACTIVE_ASSIGN')
)
)
Note that, this predicate condition applies to all IRC
responsibilities, so be sure to write an if-else kind of restriction as shown
above. Lastly, assign this grant to the required responsibility/user to activate
this restriction.
Do you find this post useful? Comment down below to let me
know.
References:
394083.1 - Understanding and Using HRMS Security in Oracle
HRMS
1668082.1 - Oracle iRec: Creating Data Filters for
Applicant Search based on the Assignment System Status