Figure out if group key code needs to be added as business key to the BO with a static inner KeyList class. If institution/location are not part of the BK currently, chances are groupKey does not need to be added to the BK. Normally we only need to add groupKey to the BK if groupKey is part of the BK of other business objects that this bo needs to lookup. Please be careful with this step and ask questions is you are not sure.
Make org.kuali.kpme.core.bo.HrKeyedBusinessObject the parent of the BO.
Remove any institution and location string fields and any transient location obj and institution obj reference fields and associated getters/setters from the BO.
Remove any attributes for location and institution from the data dictionary (DD) of the BO.
- Change the parent of the BO's contract to be KpmeEffectiveKeyedDataTransferObject (for most cases). Remove the getters, if any, for institution, location and locationObj from the BO's contract. This may lead to compilation errors in places where these getters are being invoked, these errors should be resolved as follows: if the invocation is for validating the institution or location, then depending on the situation either that invocation should be discarded completely or replaced with an appropriate check for the group key code instead. For invocations in other contexts, they should replaced with a call to the group key getter and then (after checking that the returned result is non-null), with a call to the getter for location or institution on the returned result. If you face any difficulties please ask questions in the team chat.
Remove any input fields associated with location or institution from the maintenance view, as well as from the lookup view (criteria list), and the inquiry view in the DD of the BO.
Change the parent bean to KPMEHrKeyedBusinessObjectParent in the DD of the BO.
Change the parent of the lookup view to be KPMEUif-GroupKeyedEffectiveDateBOLookupView in the DD of the BO, and set merge="true" for the lists of criteriaFields and resultFields in the lookup view. Also you should remove effective date field from the list of criteriaFields since it is defined in KPMEUif-EffectiveDateBONoViewLinkLookupView.
- Change the parent bean from Uif-Disclosure-GridSection to KPMEGroupKeyed-InquiryGridSection within the inquiry view in the DD of the BO, and set merge="true" for the lists of items to display in the inquiry view. Also remove the effective date field from the list of items since its already defined in KPMEGroupKeyed-InquiryGridSection.
Change Uif-MaintenanceGridSection to KPMEGroupKeyed-MaintenanceGridSection in the maintenance view. KPMEGroupKeyed-MaintenanceGridSection has effective date and group key code on it, so you can remove effective date from the list. Make sure you set merge="true" in the list tag for this section.
Remove any institution or location column from the database table mapped to the BO.
Add a non-nullable, varchar-type column of length 30 called GRP_KEY_CD to the database table mapped to the BO.
Remove any mappings for institution or location from the repository for the BO.
Add mapping within the newly added GRP_KEY_CD column and the (inherited) BO field of groupKeyCode to the repository for the BO.
Change dao service methods that are using Institution/location to use groupKeyCode, make sure the callers of these methods have access to groupKeyCode, this may involve adding groupKeyCode to other bos.
Change the parent of the validation class to be org.kuali.kpme.core.bo.validation.HrKeyedBusinessObjectValidation, and replace any occurrence of validateInstitution() or validateLocation() with validateGroupKeyCode(..) (this method is inherited from the new parent).
Finally fix tests, and adjust the test data and staging data related to this BO.