Breaking: Profile synchronization now includes hidden profiles and users 

Description 

The profile synchronization ( academic:updateprofiles ) previously skipped frontend users that were disabled or whose profile was hidden. Such records were neither selected by \FGTCLB\AcademicPersons\Provider\FrontendUserProvider::getUsersWithProfileResult() (the automatic hidden restriction excluded them) nor resolved by \FGTCLB\AcademicPersons\Domain\Repository\ProfileRepository::findByFrontendUser() .

The synchronization now processes hidden profiles and disabled frontend users as well and keeps their data up to date, without changing their visibility.

The same applies to the profile creation ( academic:createprofiles ): \FGTCLB\AcademicPersons\Provider\FrontendUserProvider::getUsersWithoutProfileResult() now also returns disabled frontend users and \FGTCLB\AcademicPersons\Profile\AbstractProfileFactory::createProfileForUser() resolves the frontend user ignoring its visibility, so a profile is created for a disabled frontend user as well.

Impact 

A hidden profile or a profile of a disabled frontend user that was relying on being skipped by the synchronization is now updated again on the next synchronization run. Its data (name, contact records and so on) is overwritten with the current frontend user data, while the hidden state itself is kept untouched.

A disabled frontend user without a profile now also receives a newly created profile on the next academic:createprofiles run.

Only the deleted state is still respected. Both the frontend user visibility ( fe_users.disable ) and the profile hidden field are ignored for the profile synchronization and creation. The start and end time are ignored as well, see Important: Profile synchronization ignores the visibility window.

Affected Installations 

All installations that run academic:createprofiles or academic:updateprofiles and have manually hidden profiles or disabled frontend users.

Migration 

If a profile should be excluded from the synchronization, set its Disable profile sync checkbox ( skip_sync ) instead of hiding the profile or disabling the frontend user. The checkbox sits next to the visibility of the profile record in the backend. Hiding a profile now only controls its frontend visibility, not whether it is synchronized.