2

In the implementation I'm working on there is a lot of event system (ES) code and there is an out-scaled publisher server. The publish/transport services are turned off on the CM server and all the ES code is deployed to both of them. Version of Tridion is 2013SP1.

My question is which services are required for running all the ES code? I'm especially interested in the following on the out-scaled publisher.

<PublishTransaction, SaveEventArgs>

The publisher and transport services are running, but what about the service host? Does it need to be running as well?

Some time ago I found some information about what service runs what code, but for the life of me I can't seem to dig it up once again. All I could find now are these two(three) articles but I couldn't really come to a conclusion to my dilemma.

Remote Debugging in Visual Studio Made Easy(ish)

Some are pretty straightforward, while others – I’m looking at you, event system – vary by what you’re implementing.
TridionServiceHost is used for debugging External Content Library (ECL) extensions, as well as publish events in the Event System.

Debugging a Tridion 2011 Event System

TcmServiceHost.exe fires the event that occurs when a Publish Transaction is created; TcmPublisher.exe fires publishing events based on Tridion.ContentManager.Extensibility.Events.PublishingEventArgs;

SDL docs

TcmServiceHost.exe You use this Windows Service process if you connect to the Core Service through net.tcp. This includes the use of Content Manager Explorer and Experience Manager.
TcmPublisher.exe Any functionality related to publishing uses this process. That is, to debug any Event Handler code that is triggered by an action related to publishing, as well as any template code executed during publishing, attach to TcmPublisher.exe



Besides that specific one, an "overview" of the: "item types/args <=> service" would also be useful.

Thank you.

1
  • 3
    My rule of thumb from a deployment point of view is that ALL servers using CM should have THE SAME events configured - irrelevant of whether they even execute on that machine, it's just so that sanity is preserved. PublishTransaction/SaveEventArgs - Tricky one. First time it might be triggered by the service host (someone sent something to be published in UI), followed by several TcmPublisher updates.
    – Nuno Linhares
    Commented Mar 8, 2017 at 18:09

1 Answer 1

4

In general, the TOM.NET Event System is an in-process system; the event handlers are loaded and executed in the process which hosts the CM Kernel (more specifically: the process which hosts the CM Kernel action that triggers the event).

Specifically, the PublishTransaction Save action is typically performed by the Publisher Service (which acts as a CM Kernel host for all publishing-related actions that happen after the publishing queue). However, it is theoretically also possible to Save a PublishTransaction through the Core Service, in which case the event would be handled in the Core Service Host (either TcmServiceHost.exe or w3wp.exe, depending on which Core Service endpoint was used).

On the other hand, the Publish action itself (which enqueues a PublishTransaction) is typically performed by the Core Service (triggered by CME, custom Core Service client code or some event handler which runs in the Core Service), but it could also be performed by the Publisher Service (triggered by template code or some event handler which runs in the Publisher Service).

I'm sorry, I can't make it any easier. :-)

2
  • It took me a couple of reads, but I believe all is clear now :). Just one thing I want to double check, if I understood correctly under normal circumstances the ES code related to the publish action's initial save to the queue is done within the TcmServiceHost if the action is triggered by the CME or Core Service through net.tcp, and is done within the W3WP if it's triggered by Core Service through basic http?
    – Atila Sos
    Commented Mar 9, 2017 at 9:44
  • Correct. It seems you have got it! :-) Commented Mar 9, 2017 at 18:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.