Try our conversational search powered by Generative AI!

Catch delayed publish event



I have some code in the solution that is executed when a page is published. Like below :

            DataFactory.Instance.PublishedContent += Instance_PublishedContent;

However, when a page or block is scheduled to be published in the future, this event is not raised and the code will not run as a result.

Is there anyway I can catch delayed publish event in my code? 

Jan 12, 2015 12:47

Not sure that you are able to catch events, as job that is responsible for scheduled publishing is not publishing a page through data factory, but instead - modifies StartPublish property date directly and then - saves the content.

IContent content2 = content1;
IVersionable versionable1 = content2 as IVersionable;
if (versionable1 != null)
  IVersionable versionable2 = contentRepository.Get<IContent>(...) as IVersionable;
  if (versionable2 != null && versionable2.Status == VersionStatus.Published)
    versionable1.StartPublish = versionable2.StartPublish;
contentRepository.Save(content2, (SaveAction) 259, AccessLevel.NoAccess);

You could intercept saving event, check for IVersionable interface and check it's status:

IVersionable versionable2 = contentRepository.Get<IContent>(...) as IVersionable;

if(versionable2 != null && versionable2.Status == VersionStatus.DelayedPublish)
    // black magic here
Jan 12, 2015 15:45


Did you manage to catch saving event when triggered from the scheduled job?

My breakpoint doesn't get hit, but something is fishy with this project's delayed publishing scheduled job, since I always get 0 pages were published and they are in fact published.



Feb 26, 2015 16:14

No I couldn't get it working. I think at the time I realised I would have to have my own delayed publishing job to get it working. The problem for me was that I have a cache layer above Episerver data cache and the cache would not get invalidated if the page/block was scheduled to be published. It's no a major issue for us at the moment as our editors don't use scheduled publishing often.

Please let me know if you find a solution or a fix from Episerver is released.

Feb 26, 2015 17:24

What version are you using?

I have EPiServer.CMS.Core 7.19.2 and the PublishedEvent is actually fired for delayed publishing (when the EpiServer job "Publish Delayed Content Versions" is executed)

I start to listen for the event in SiteInit.cs:
context.Locate.ContentEvents().PublishedContent += NotifyCacheManager;

Mar 19, 2015 13:33

EPiServer 6 R2 for me.

I ended up sending emails in my own scheduled job instead. So, I send an email and set a flag on the page that the email has been sent (so that I send it only once). (And I do this after a specific datetime, so that I don't end up sending emails for all the pages ever published :D)



Mar 19, 2015 13:36

We are using 7.13 . I have a code below:

            DataFactory.Instance.PublishedContent += Instance_PublishedContent;

It has either been fixed in the newer versions or I should use contex.Locate.ContentEvents() like you have.

Thanks for sharing Sven.

Mar 19, 2015 14:31
* 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.