public static function copyTemplateContent(Partner $fromPartner, Partner $toPartner, $dontCopyUsers = false)
 {
     $partnerCustomDataArray = $fromPartner->getCustomDataObj()->toArray();
     $excludeCustomDataFields = kConf::get('template_partner_custom_data_exclude_fields');
     foreach ($partnerCustomDataArray as $customDataName => $customDataValue) {
         if (!in_array($customDataName, $excludeCustomDataFields)) {
             $toPartner->putInCustomData($customDataName, $customDataValue);
         }
     }
     // copy permssions before trying to copy additional objects such as distribution profiles which are not enabled yet for the partner
     self::copyPermissions($fromPartner, $toPartner);
     self::copyUserRoles($fromPartner, $toPartner);
     kEventsManager::raiseEvent(new kObjectCopiedEvent($fromPartner, $toPartner));
     self::copyAccessControls($fromPartner, $toPartner);
     self::copyFlavorParams($fromPartner, $toPartner);
     self::copyConversionProfiles($fromPartner, $toPartner);
     self::copyCategories($fromPartner, $toPartner);
     self::copyUiConfsByType($fromPartner, $toPartner, uiConf::UI_CONF_TYPE_WIDGET);
     self::copyUiConfsByType($fromPartner, $toPartner, uiConf::UI_CONF_TYPE_KDP3);
     // Launch a batch job that will copy the heavy load as an async operation
     kJobsManager::addCopyPartnerJob($fromPartner->getId(), $toPartner->getId());
 }