Symptom
When doing a Survey search based on Item ID filter, the search returns surveys which are not associated with the item anymore and they have been removed from the item already.
Environment
SAP SuccessFactors Learning
Reproducing the Issue
- Access Learning administration > Content > Surveys and search for surveys by using the item filter and selecting a specific item
- Multiple surveys are returned in the search results. However, not all of them are actually linked to the item currently as some of them have already been removed from it in the past
- If you open the Survey and go to the Item Usage tab, you will not see the item there anymore
Cause
As per Engineering, this is following the system design based on the search query of the system default Search Selector Configuration for Surveys.
Since the previous Survey which was removed from the item was completed and submitted by users in the past, the record for this survey will be still available in PA_CPNT_SURVEY table with IS_ACTIVE column having a value 'N' (this means it is not actively used on the item anymore).
The Survey Search Selector Configuration's item filter query currently checks for all the surveys that are associated with the item in the above table, irrespective of them being active or inactive for the related item, hence the search will return those surveys as well which are already removed from the item.
Resolution
In case you have a business need to filter for only active survey-item relationships then you will need to customize the Search Selector Configuration for the Survey search as a workaround.
You can test the following workaround suggested by LMS Engineering (we would recommend doing it first in a Preview tenant before implementing the same on Production):
- Go to System Administration > Configuration > Search Selectors
- Search for the one called "Survey"
- Open it in Edit mode
- Scroll down to the following config property:
- criteria.Component.filter=(survey_id in (select survey_id from pa_cpnt_survey where (cpnt_typ_id, cpnt_id, rev_dte) $OPERATOR$ $VALUE$))
- criteria.Component.filter=(survey_id in (select survey_id from pa_cpnt_survey where (cpnt_typ_id, cpnt_id, rev_dte) $OPERATOR$ $VALUE$))
- Replace it with the below modified condition that also checks the value in the IS_ACTIVE database field:
- criteria.Component.filter=(survey_id in (select survey_id from pa_cpnt_survey where is_active='Y' and (cpnt_typ_id, cpnt_id, rev_dte) $OPERATOR$ $VALUE$))
- criteria.Component.filter=(survey_id in (select survey_id from pa_cpnt_survey where is_active='Y' and (cpnt_typ_id, cpnt_id, rev_dte) $OPERATOR$ $VALUE$))
- Apply Changes
This new condition on the item filter should return only active survey-item relationships and it should filter out the surveys which are not actively used on the item anymore.
Please note the followings: The above workaround was provided directly by LMS Engineering. However, as standard Support is unable to assist with customizations we cannot perform this modification for you and would not be able to help with any further customized change to the same config. If you believe you would need assistance for utilizing this workaround on your system, we recommend engaging your certified Partner for help.
See Also
Keywords
survey, search, item, filter, PA_CPNT_SURVEY, search selector , KBA , LOD-SF-LMS-EVA , Surveys , How To