public function sendNewUserNotification(CNabuUser $nb_user, array $params = null) : bool
    {
        $retval = false;
        $nb_engine = CNabuEngine::getEngine();

        if (($nb_profile = $this->getUserProfile($nb_user)) instanceof CNabuSiteUser &&
            ($nb_language_id = $nb_profile->getLanguageId())
        ) {
            if (count($params) === 0) {
                $params = array();
            }
            foreach ($nb_user->getTreeData($nb_language_id, true) as $key => $item) {
                if (is_scalar($item)) {
                    $params["target_user_$key"] = $item;
                }
            }

            $nb_site_role = $this->getSiteRole($nb_profile);
            $nb_template_id = $nb_site_role instanceof CNabuSiteRole &&
                              $nb_site_role->isValueNumeric('nb_messaging_template_new_user')
                            ? $nb_template_id = $nb_site_role->getMessagingTemplateNewUser()
                            : $this->getMessagingTemplateNewUser()
            ;

            return is_numeric($nb_template_id) &&
                   ($nb_messaging = $this->getMessaging($this->getCustomer())) instanceof CNabuMessaging &&
                   ($nb_messaging_factory = $nb_messaging->getFactory()) instanceof CNabuMessagingFactory &&
                   $nb_messaging_factory->postTemplateMessage($nb_template_id, $nb_language_id, $nb_user, null, null, $params)
            ;
        } else {
            throw new ENabuSecurityException(ENabuSecurityException::ERROR_USER_NOT_ALLOWED, array($nb_user->getId()));
        }
    }