/** @see org.kuali.rice.krad.service.DocumentService */
  @Override
  public void sendNoteRouteNotification(Document document, Note note, Person sender)
      throws WorkflowException {
    AdHocRouteRecipient routeRecipient = note.getAdHocRouteRecipient();

    // build notification request
    Person requestedUser = this.getPersonService().getPersonByPrincipalName(routeRecipient.getId());
    String senderName = sender.getFirstName() + " " + sender.getLastName();
    String requestedName = requestedUser.getFirstName() + " " + requestedUser.getLastName();

    String notificationText =
        kualiConfigurationService.getPropertyValueAsString(
            RiceKeyConstants.MESSAGE_NOTE_NOTIFICATION_ANNOTATION);
    if (StringUtils.isBlank(notificationText)) {
      throw new RuntimeException(
          "No annotation message found for note notification. Message needs added to application resources with key:"
              + RiceKeyConstants.MESSAGE_NOTE_NOTIFICATION_ANNOTATION);
    }
    notificationText =
        MessageFormat.format(
            notificationText, new Object[] {senderName, requestedName, note.getNoteText()});

    List<AdHocRouteRecipient> routeRecipients = new ArrayList<AdHocRouteRecipient>();
    routeRecipients.add(routeRecipient);

    workflowDocumentService.sendWorkflowNotification(
        document.getDocumentHeader().getWorkflowDocument(),
        notificationText,
        routeRecipients,
        KRADConstants.NOTE_WORKFLOW_NOTIFICATION_REQUEST_LABEL);

    // clear recipient allowing an notification to be sent to another person
    note.setAdHocRouteRecipient(new AdHocRoutePerson());
  }
 protected String checkMemberFullName(String principalId) {
   Principal principal = getIdentityService().getPrincipal(principalId);
   if (principal != null) {
     Person psn =
         KimApiServiceLocator.getPersonService()
             .getPersonByPrincipalName(principal.getPrincipalName());
     if (psn != null) {
       return psn.getFirstName() + " " + psn.getLastName();
     }
   }
   return null;
 }