Calling all developers! We invite you to provide your input on Feature Experimentation by completing this brief survey.

 

Programatically creating Block in folder with Approval Sequence does not generate Notifications

Vote:
 

Using: EPiServer.CMS version=11.12.0 

Programatically creating a Block in sub-folder whose parent has an Approval Sequence does not generate the Notification emails, is this a bug?

This works: Manually adding Block via the CMS back-end in blocks folder with inherited Approval Sequence. I investiagted what was happening in the database and this is what occurs when the Block is created in the CMS:

  1. Create Block
    1. Creates 1 record in the [tblNotificationSubscription] table
      1. e.g. projects://notification/21234/
    2. Publish the content set it to Ready for Review
      1. Creates 2 records in the [tblNotificationSubscription] table
        1. approvals://notification/17/ (one for each User in the Approval group)
        2. projects://notification/21235/
      2. Creates 1 record in the [tblNotificationMessage] table
    3. Run the Notification Dispatcher service – sends email to relevant people in the Aproval Sequence group

 

This does not create the Notifications: Programmatically creating a Block and adding to folder with inherited Approval Sequence is as below. The problem here is that the Notification email is never generated in the [tblNotificationMessage] table:

  1. Create Block with code below sets the Block to Ready for Review
_contentRepository.Save(contentBlock, SaveAction.RequestApproval, AccessLevel.NoAccess);
  1. Creates 1 record in the [tblNotificationSubscription] table
    1. e.g. approvals://notification/19/
    2. Note: There is no projects:// entry added
  2. No records are added to the [tblNotificationMessage] table

So when I programatically add the Block that is in a Approval Sequence NO notifications are generted = no emails sent to the relevant modertators.

Is this a bug?

Is there any way to tell Episerver to create the Notifications for the Approval Sequence other than programatically using the INotifier interface?

If I have to us the INotifier interface is it possible to use the epi-approval Channel and Approval type like in code below:

var notifier = ServiceLocator.Current.GetInstance<INotifier>();

INotificationUser sender = new NotificationUser("noreply@hop-episerver.com");
INotificationUser receiver = new NotificationUser(_settingsWrapper.HopSiteSettingsPage.CommentModeratorsGroupEmail);

notifier.PostNotificationAsync(new NotificationMessage()
{
    ChannelName = "epi-approval",
    // Content =  What Json do I add here for the email formatter or how do I access the formatter txt??
    Recipients = new[] { receiver },
    Sender = sender,
    TypeName = "Approval"
});

#208658
Edited, Oct 29, 2019 16:56
Vote:
 

In the absence of any solutions or exaplantion of the behaviour Ive seen Ive decided to programatically create the Notifications.

So first I create the CommentBlock with code like:

_contentRepository.Save(contentBlock, SaveAction.RequestApproval, AccessLevel.NoAccess);

Then I generate my NotificationMessage and Ive 'hijacked' the Approval sequence Channel which is epi-approval and code as is below. It works but fingers crossed that the json for Content does not change in future releases of Episerver:

var dateTimeCreated = DateTime.UtcNow.ToString("o", CultureInfo.CreateSpecificCulture("en-GB")); //2019-11-04T10:40:28.9240851Z

//Note: The json Content property here was copied from the [tblNotificationMessage] db table entry for a Comment block added
//      using the CMS editor interface to a folder with an Approval sequence applied to it.
notifier.PostNotificationAsync(new NotificationMessage()
{
    ChannelName = "epi-approval",
    Content = "{\"status\":7,\"contentLink\":\"" + commentContentLinkId + "\",\"resourceKey\":\"awaitingapproval\",\"comment\":null,\"stepNumber\":1,\"totalSteps\":1,\"created\":\"" + dateTimeCreated + "\"}",
    Recipients = recipients,
    Sender = sender,
    TypeName = "Approval"
});
#208962
Nov 05, 2019 12:57
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.