<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Julian Wraith &#187; SDL Tridion</title>
	<atom:link href="http://www.julianwraith.com/category/sdl-tridion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.julianwraith.com</link>
	<description>CMS expert, entrepreneur and autodidact.</description>
	<lastBuildDate>Tue, 31 Jan 2012 15:52:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Using Splunk with SDL Tridion</title>
		<link>http://www.julianwraith.com/2011/11/using-splunk-with-sdl-tridion/</link>
		<comments>http://www.julianwraith.com/2011/11/using-splunk-with-sdl-tridion/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 19:39:58 +0000</pubDate>
		<dc:creator>Jules</dc:creator>
				<category><![CDATA[SDL Tridion]]></category>
		<category><![CDATA[content delivery]]></category>
		<category><![CDATA[splunk]]></category>

		<guid isPermaLink="false">http://www.julianwraith.com/?p=754</guid>
		<description><![CDATA[I’ve been recently playing with Splunk and I wanted to share the experience I am having so that you too can play with this cool tool. What is Splunk? I think the chaps from Splunk explain that the best… Splunk is the engine for machine data. Use Splunk to collect, index and harness the fast [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been recently playing with Splunk and I wanted to share the experience I am having so that you too can play with this cool tool.</p>
<p><strong>What is Splunk?</strong><br />
I think the chaps from Splunk explain that the best…</p>
<p style="padding-left: 30px;"><em>Splunk is the engine for machine data. Use Splunk to collect, index and harness the fast moving machine data generated by all your applications, servers and devices — physical, virtual and in the cloud. Search and analyze all your real-time and historical data from one place.</em><br />
<em>Splunking your machine data lets you troubleshoot problems and investigate security incidents in minutes, not hours or days. Monitor your end-to-end infrastructure to avoid service degradation or outages. Meet compliance mandates at lower cost. Correlate and analyze complex events spanning multiple systems. Gain new levels of operational visibility and intelligence for IT and the Business.</em></p>
<p><strong>Cool… but then why is this nice?</strong><br />
Traditional support organizations supporting large web farms often have monitoring in place and then when something goes wrong they go to the server and search the logs until they have the reason for the failure. At the bare minimum, which is where I am at, Splunk aggregates all the logs from your entire web farm and presents is as one complete picture. From this I can see trends and machines with difficulties (problematic to spot when you have alot of servers). I am sure Splunk does a lot more, but I am not yet there. When I have discovered them, I will share them but so far I am a happy camper.</p>
<p><strong>Adding SDL Tridion (of course) as a data source</strong><br />
Splunk takes multiple sources of log data and the usual list of candidates are web server (in my case, IIS) logs and Windows Event Logs. I want my Content Delivery logs integrated and so I set about doing this.</p>
<p>For this I will leverage SDL Tridion 2011’s updated logging (<a href="http://logback.qos.ch/" target="_blank">LOGBack</a>) and with this I am able to configure logging to output logs to Syslog. <a href="http://en.wikipedia.org/wiki/Syslog" target="_blank">Syslog</a> is a standard way of logging application messages that separates the software application and the system logging the messages. In essence, the messages can be pushed out much like a network broadcast and a logging system, Splunk, captures that.<br />
SO I want to configure the logging in SDL Tridion Content Delivery to push the messages to Syslog. For this we need two things: 1) an Appender and 2) a reference to that appender for my log. The Appender configures my log output and looks like:</p>
<pre>&lt;appender name="SYSLOG"&gt;
     &lt;syslogHost&gt;localhost&lt;/syslogHost&gt;
     &lt;facility&gt;LOCAL0&lt;/facility&gt;
     &lt;suffixPattern&gt;[%thread] %-5level %logger %msg&lt;/suffixPattern&gt;
&lt;/appender&gt;</pre>
<p>This is the example from the LOGBack help documentation (http://logback.qos.ch/manual/appenders.html) with the addition of the logging level (“%-5level” which captures “ERROR”, “INFO” etc.). Then I can set a given log to push it’s messages to my Syslog appender:</p>
<pre>&lt;logger name="com.tridion.deployer"&gt;
     &lt;appender-ref ref="rollingDeployerLog"/&gt;
     &lt;appender-ref ref="SYSLOG"/&gt;
&lt;/logger&gt;</pre>
<p>I’ve kept in the original logging (“rollingDeployerLog”) just for testing and validation.</p>
<p><a href="http://www.julianwraith.com/wp-content/uploads/2011/11/splunk.png"><img class="alignleft size-full wp-image-756" title="splunk" src="http://www.julianwraith.com/wp-content/uploads/2011/11/splunk.png" alt="" width="422" height="327" /></a>In Splunk I need to add a data source to listen to this output. So I add a new local Syslog data source specifying the (standard) port. I don’t need to specify a hostname because I did that in my logging configuration on Tridion. I told it to push the messages to “localhost” but that could be any server.</p>
<p>After that, once Tridion logs messages, Splunk will pick them up and store them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.julianwraith.com/2011/11/using-splunk-with-sdl-tridion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SDL Tridion Community Webinar – November 2011</title>
		<link>http://www.julianwraith.com/2011/10/sdl-tridion-community-webinar-%e2%80%93-november-2011/</link>
		<comments>http://www.julianwraith.com/2011/10/sdl-tridion-community-webinar-%e2%80%93-november-2011/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 17:19:19 +0000</pubDate>
		<dc:creator>Jules</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[SDL Tridion]]></category>
		<category><![CDATA[knowledge]]></category>
		<category><![CDATA[mvp]]></category>

		<guid isPermaLink="false">http://www.julianwraith.com/?p=712</guid>
		<description><![CDATA[At the recent MVP meeting in Lisbon, where a collection of 11 community members get together to talk about components and schemas from dawn till dusk, I volunteered to run a series of online community webinars. So in November we’ll see the first of these sessions which we hope to repeat over the course of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.julianwraith.com/wp-content/uploads/2011/10/file-sharing.jpg"><img class="alignleft size-medium wp-image-714" title="file-sharing" src="http://www.julianwraith.com/wp-content/uploads/2011/10/file-sharing-300x200.jpg" alt="" width="300" height="200" /></a>At the recent MVP meeting in Lisbon, where a collection of 11 community members get together to talk about components and schemas from dawn till dusk, I volunteered to run a series of online community webinars.</p>
<p>So in November we’ll see the first of these sessions which we hope to repeat over the course of 2011/2012.</p>
<p>So what is the idea? The idea is that anyone can join in and if desired present on a community organized and driven event. The sessions, covering 10-15 minutes, can cover any topic related to a SDL Tridion (e.g. a recently implemented project, bit a useful template). It can be in demonstration or slide format&#8230; or both.</p>
<p>Towards the end of October I will post here on the final format of the sessions but we are looking for community volunteers to present the sessions. Do you want to present something? If so, comment on this post and I will get back to towards the end of October.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.julianwraith.com/2011/10/sdl-tridion-community-webinar-%e2%80%93-november-2011/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Measuring SDL Tridion Usage with SQL</title>
		<link>http://www.julianwraith.com/2011/08/measuring-sdl-tridion-usage-with-sql/</link>
		<comments>http://www.julianwraith.com/2011/08/measuring-sdl-tridion-usage-with-sql/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 18:50:48 +0000</pubDate>
		<dc:creator>Jules</dc:creator>
				<category><![CDATA[SDL Tridion]]></category>
		<category><![CDATA[usage]]></category>

		<guid isPermaLink="false">http://www.julianwraith.com/?p=679</guid>
		<description><![CDATA[If you can’t manage what you can’t measure, then it makes sense to start measuring any SDL Tridion environment so that you better understand what you are doing with your environment and help predict the future. I’ll get onto measuring what you publish and how often at a later date but I recently looked at [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_684" class="wp-caption alignright" style="width: 310px"><a href="http://www.julianwraith.com/wp-content/uploads/2011/08/measure.jpg"><img class="size-medium wp-image-684 " title="measure" src="http://www.julianwraith.com/wp-content/uploads/2011/08/measure-300x200.jpg" alt="" width="300" height="200" /></a><p class="wp-caption-text">© Jeff Golden (Flickr)</p></div>
<p>If you can’t manage what you can’t measure, then it makes sense to start measuring any SDL Tridion environment so that you better understand what you are doing with your environment and help predict the future. I’ll get onto measuring what you publish and how often at a later date but I recently looked at measurement of content for a customer so I thought I would quickly share that.</p>
<p>At the base level I want to know something about how many creates or updates I do on a given SDL Tridion implementation. Now, doing this via the API will be troublesome because the API does not lend itself to doing operations over the entire content repository in one call and if I want to report I don’t want to end up with expensive reporting activities. By far and away the best way to do this is directly on the database and below I have listed out some queries that will give you some ideas on what information you could report on.</p>
<p>You could easily take these queries and knock them into a nice ASP.NET page to display your results or even include them in a bona fide reporting tool like Crystal Reports. The queries are all read only so they are safe to run on any environment.<br />
<strong>Getting the number of publications</strong>; easy to see in the Tridion interface but why not start with a basic query:</p>
<pre style="padding-left: 30px;">SELECT count(*) FROM publications;</pre>
<p>Not too hard I would say…</p>
<p><strong>Components created for a given day with Schema Title</strong>; this was my main aim of the reporting, show what components are created and what schema they are based upon. This query gave me some headaches because the Schema (title) is actually a row in the same table that you are querying for your component information. You could take the easy way out and just retrieve the ID of the schema and look it up later but why take the easy way out?</p>
<pre style="padding-left: 30px;">SELECT DISTINCT itm1.title, COUNT(*) total  
FROM items itm1
JOIN
(
  SELECT itm3.title, itm3.schema_reference_id, itm3.item_reference_id, itm3.publication_id, itm3.version
  FROM items itm3
  WHERE TRUNC(itm3.modification_date)=TO_DATE('26-11-2009','DD-MM-YYYY')
  AND itm3.version = 1
  AND itm3.item_type=16
) itm2
ON (itm2.schema_reference_id = itm1.item_reference_id)
GROUP BY itm1.title
ORDER BY total DESC</pre>
<p>So the crucial parts to this query are:</p>
<p>The JOIN, the sub query is the list of components that were created on the date in the WHERE clause. If you want those items they were updated you can better put “AND itm3.version &gt; 1” or just leave it out completely if you want both created &amp; updated in the same result. For a nice report you would want probably want to parameterize the date so you can report any given day but if you are just running the SQL you’ll need to update by hand. The “item_type = 16” refers to components and it is worth noting this query will not work for pages (item type of 64) because pages don’t have schemas, they have templates and they can also inherit them rather than having them set explicitly so it makes discovery of what template a page was created against a mind bender I did not feel inclined to take a look at (yes, I took the easy route).</p>
<p><strong>Total new components for a given day by user</strong>; a good way to check who is doing what is looking, by day, who created content. It says nothing about how many meetings the users attended or even how many coffees they made for the team, just how much they created (i.e. made a version 1 component):</p>
<pre style="padding-left: 30px;">SELECT trs.name, count(*) total_new_items
FROM items itm, trustees trs
WHERE TRUNC(itm.modification_date)=TO_DATE('26-11-2009','DD-MM-YYYY')
AND itm.version = 1
AND itm.item_type=16
AND trs.id=itm.trustee_id
GROUP BY trs.name
ORDER BY total_new_items DESC;</pre>
<p>As for the first query, updates can be found by using “&gt; 1” for the version.</p>
<p><strong>Total updates/creates of items per day</strong>; this query will show you, over time, what the total of items (e.g. components, pages, folders, publications) were created per day is.</p>
<pre style="padding-left: 30px;">SELECT modification_date, COUNT(*) total
FROM items
GROUP BY modification_date
ORDER BY total DESC</pre>
<p>Hopefully that gives you a little insight into what you could report on your own environment. Collecting statistics is key to a successful environment and without it you do not know if your investment is well spent or if your project is really being successful.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.julianwraith.com/2011/08/measuring-sdl-tridion-usage-with-sql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fall in Love with SDL Tridion Publishing &#8211; Part Two</title>
		<link>http://www.julianwraith.com/2011/08/fall-in-love-with-sdl-tridion-publishing-part-two/</link>
		<comments>http://www.julianwraith.com/2011/08/fall-in-love-with-sdl-tridion-publishing-part-two/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 14:26:20 +0000</pubDate>
		<dc:creator>Jules</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[SDL Tridion]]></category>
		<category><![CDATA[publishing]]></category>

		<guid isPermaLink="false">http://www.julianwraith.com/?p=672</guid>
		<description><![CDATA[A while back I wrote about how to fall in love with publishing in SDL Tridion. It’s true; you will fall in love with it when it is working well. In the article I describe the more end user aspect of publishing but typically there are allot of aspect to publishing that the end user [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.julianwraith.com/wp-content/uploads/2010/04/photo_big_heart_pc.jpg"><img class="alignright size-medium wp-image-493" title="Love your computer" src="http://www.julianwraith.com/wp-content/uploads/2010/04/photo_big_heart_pc-300x198.jpg" alt="" width="300" height="198" /></a>A while back I wrote about how to <a href="(http://www.julianwraith.com/2010/04/fall-in-love-with-sdl-tridion-publishing/">fall in love with publishing in SDL Tridion</a>. It’s true; you will fall in love with it when it is working well. In the article I describe the more end user aspect of publishing but typically there are allot of aspect to publishing that the end user cannot control but that are controlled by the IT or hosting organization.</p>
<p><span style="text-decoration: underline;"><strong>TGIF?</strong></span><br />
So there I am, its 5 PM on a Friday and I am trying to get out that article that I have written in the afternoon. I am waiting for it to publish and it is taking longer than I want because I have better things to do. It’s Friday after all! I have to wait in that queue for my job to be processed after all the other jobs that were submitted before mine. But it is a queue, right? That’s what happens, I join the back and I wait until I get to the front for my turn. (At least that’s how we do it in the UK.  Also, we mumble.)</p>
<p><strong>So what determines how long the queue takes?</strong><br />
Certainly not the user! The user determines how many jobs are in the queue but not how long it takes to complete the jobs.  The duration is mostly determined by a) the task, b) the templates, c) the servers and d) the configuration.</p>
<p><span style="text-decoration: underline;"><strong>The Task</strong></span><br />
I am sure many of you have queued in the bank.( I am sure that is also why many of you turned to online banking.) There are 5 people in front of you but how long are you waiting? 5 minutes or 10 minutes? The answer is, you have no idea… it depends on what those people want from the bank. Some might want information, some cash and others might want a loan. Each person represents a complexity that will take x amount of minutes of handling by the servers (and yes and I expressly used the word “server” rather than “clerk”). Publishing Jobs submitted by the users are the same, in that the jobs vary in complexity and that cannot be determined by looking superficially at the job (or person) in question.</p>
<p>The complexity is determined in two ways. Firstly, what the user tried to publish and secondly, how the data model is constructed.  Now I know I said the user does not determine the queue duration and now I contradicted myself. But, I don’t believe that it is the user’s job to determine whether or not something should be published they need to publish what they need to publish. However, it is important to note that some Tridion items, when published, can take more items along for the ride. A Structure Group, for example, has pages and nested Structure Groups which need to be published also.</p>
<p>The data model determines our relationships between items. So when I publish an item, additional items will be taken because they complete an item. This typically is a small number of items, but the data model could need attention if publishing a single item leads to excessive numbers of additional items.</p>
<p><span style="text-decoration: underline;"><strong>The Templates</strong></span><br />
When I get to the front of the queue at the bank, I am most likely going to be presented with some forms to fill in. Those legal documents that lets me get the money to buy a car or get a new credit card. How long it takes me to fill out those forms will determine how long it will be before I am finished. The smaller and simpler the form, the better! My publishing job will execute templates to create some sort of output (e.g. HTML, XML, Java or ASP.NET code).  The templates take time to execute and many templates may have to be executed for one job. The larger and more complex these templates, the longer it will be before I see my publish job completed.</p>
<p><span style="text-decoration: underline;"><strong>The Servers</strong></span><br />
The speed the servers work at and the amount of simultaneous activities they can complete affects the overall speed of publishing a job. The servers must therefore be scaled to meet the load requirements of the environment. Much like the bank, the overall throughput effects the waiting time of any job, with a single server I will wait the longest, with multiple parallel servers the waiting time will be reduced. In most scaled environments the tendency will be to separate out publishing from other server functions (database, management interface), this dedication of a task means that the server can concentrate on the same repetitive task without being interrupted with other business and therefore improve the overall publishing throughput of this server.</p>
<p><span style="text-decoration: underline;"><strong>The Configuration</strong></span><br />
The configuration options with SDL Tridion, allow you to manipulate how the queue is managed; it in essence all publishing jobs are equal but with Publishing Priorities and Filters some jobs are more equal than others. Priorities can be set by the end user at the time of publish or as a rule on a given Publishing Target. The priority (high, normal or low) allows the most important tasks to go first (or the least important tasks last) and works like any priority system would do.</p>
<p>Filtering adds an extra dimension to this and the overall way items are removed from the queue for publishing. Many banks have separate desks for different tasks. If you go to deposit some money you use a different desk to the desk where you get a loan. Filtering does the same thing, in that it allows us to specify certain servers to complete certain jobs depend upon its configuration. Filtering is possible by Publication (e.g. German Website), Publication Target (e.g. Live) or Priority (e.g. High) – or a combination of multiple filters with multiple values. So for certain areas of your business you could, for example, dedicate servers to complete just those tasks; so in times of lots of house buying, we have more servers on the loans desk and we divide our throughput unevenly across our customers.</p>
<p><span style="text-decoration: underline;"><strong>4 actions to improve to improve publishing</strong></span><br />
I have not encountered a single organization yet who could not do with faster publishing. Even when you think it is as fast as it can be, there will still be room for improvement somewhere. In summary, I have four points you can act upon that can help you love publishing that little bit more…</p>
<ol>
<li>Understand what you publish! You can’t manage what you can’t measure, so start measuring! The information you need in available in the API, so a simple report will be enough to help you collect the data needed:</li>
<ol>
<li>What is your total job load per day?</li>
<li>How many items do these jobs consist of?</li>
<li>How long does it take to render the items in the job?</li>
</ol>
<li>Investigate to see if adjusting the configuration can ensure that important publications get the time they deserve and those publications lower down the content management food chain get less time.</li>
<li>Have IT analyze the performance of your servers under stress, can the performance be improved? If so, then you will gain in throughput.</li>
<li>Undertake and analysis of the templates and the data model to see where performance can be improved. Having the data from the measurements can really help zoom into what is performing badly.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.julianwraith.com/2011/08/fall-in-love-with-sdl-tridion-publishing-part-two/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Announcing the Tridion Practice project</title>
		<link>http://www.julianwraith.com/2011/07/announcing-the-tridion-practice-project/</link>
		<comments>http://www.julianwraith.com/2011/07/announcing-the-tridion-practice-project/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 08:44:50 +0000</pubDate>
		<dc:creator>Jules</dc:creator>
				<category><![CDATA[Asides]]></category>
		<category><![CDATA[SDL Tridion]]></category>
		<category><![CDATA[cookbook]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[Tridion]]></category>

		<guid isPermaLink="false">http://www.julianwraith.com/?p=668</guid>
		<description><![CDATA[Dominic Cronin has release the Tridion Practice Project which is a is a community collaboration cookbook]]></description>
			<content:encoded><![CDATA[<p>Dominic Cronin has release the Tridion Practice Project which is a is a <a href="http://www.dominic.cronin.nl/weblog/announcing-the-tridion-practice-project">community collaboration cookbook</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.julianwraith.com/2011/07/announcing-the-tridion-practice-project/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Community Builder Award 2011</title>
		<link>http://www.julianwraith.com/2011/02/community-builder-award-2011/</link>
		<comments>http://www.julianwraith.com/2011/02/community-builder-award-2011/#comments</comments>
		<pubDate>Sun, 20 Feb 2011 14:15:29 +0000</pubDate>
		<dc:creator>Jules</dc:creator>
				<category><![CDATA[Asides]]></category>
		<category><![CDATA[SDL Tridion]]></category>
		<category><![CDATA[CBA]]></category>

		<guid isPermaLink="false">http://www.julianwraith.com/?p=663</guid>
		<description><![CDATA[From SDL, I got a Community Builder Award for 2011. Like an MVP but for employees I am proud to get this, I hope I can continue the work I have done and then some more&#8230;]]></description>
			<content:encoded><![CDATA[<p>From SDL, I got a Community Builder Award for 2011. Like an MVP but for employees I am proud to get this, I hope I can continue the work I have done and then some more&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.julianwraith.com/2011/02/community-builder-award-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Event Systems in SDL Tridion 2011</title>
		<link>http://www.julianwraith.com/2011/02/event-systems-in-sdl-tridion-2011/</link>
		<comments>http://www.julianwraith.com/2011/02/event-systems-in-sdl-tridion-2011/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 13:39:41 +0000</pubDate>
		<dc:creator>Jules</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[SDL Tridion]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[bart koopman]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[event system]]></category>
		<category><![CDATA[object]]></category>
		<category><![CDATA[phase]]></category>
		<category><![CDATA[SDL Tridion World]]></category>

		<guid isPermaLink="false">http://www.julianwraith.com/?p=647</guid>
		<description><![CDATA[As I mentioned in one of my previous post the event system has been revised to me more modular and, probably more importantly, to be native .NET. An event, an action from a user, triggers the event system which is one or more .NET classes which will act upon this event in some way. In [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_650" class="wp-caption alignright" style="width: 260px"><a href="http://www.julianwraith.com/wp-content/uploads/2011/02/EventHorizonFCover.jpg"><img class="size-full wp-image-650" title="EventHorizonFCover" src="http://www.julianwraith.com/wp-content/uploads/2011/02/EventHorizonFCover.jpg" alt="" width="250" height="354" /></a><p class="wp-caption-text">Event Horizon</p></div>
<p>As I mentioned in one of <a href="http://www.julianwraith.com/2011/02/five-things-you-must-know-about-sdl-tridion-2011/" target="_blank">my previous post</a> the event system has been revised to me more modular and, probably more importantly, to be native .NET.</p>
<p>An event, an action from a user, triggers the event system which is one or more .NET classes which will act upon this event in some way. In versions of Tridion prior to 2011 the event system has been a single class which then leads to having to combine different event activity into the same piece of code. For instance, additional logging and workflow elements might have to be combined; this leads to unnecessary complexity in the code itself. It also means you cannot easily turn off (and on) part of the code.</p>
<p>In SDL Tridion 2011, this has changed (although you can still run older event systems) to allow you to hook into events using multiple separate event systems. As <a href="http://www.sdltridionworld.com/articles/sdltridion2011/sdltridion2011eventsystem.aspx" target="_blank">Bart Koopman explains in this article</a>, when we hook into the events we concern ourselves with the <strong>phase </strong>of the event, the <strong>type </strong>of event and the <strong>object</strong> itself.</p>
<p>The phase relates to where in the event you are, for example, initiated, processed, committed etc. The type refers to the type of event, e.g. Publishing, BluePrint, or Data Modification events. Lastly our object (or in more familiar terms “item”) itself; our Component, Page, Schema etc. With these I can easily define that I would like to fire an event on a Component, when it is published and after that publish action has started.</p>
<p>Two more additional features are important. Firstly, it is quite possible that you have more than one event system hooked into the same event, so with the &#8220;Event Subscription Order&#8221; you can also specify the order in which your code is triggered (creating a event system stack). Secondly, you can also specify an event to run asynchronously rather than wait for code to complete before other code can continue (synchronously).</p>
<p><span style="text-decoration: underline;"><strong>Event System Example</strong></span></p>
<p>We need to do two simple things to get this to work:</p>
<p>1)      Define out event system class</p>
<p>2)      Configure SDL Tridion to load the event system and make it active</p>
<p><strong>The Event System Class</strong></p>
<p>We need to define our event system and this being .NET we can pretty much do anything we want from here, however, we need to at minimum hook (or rather subscribe) to an event.</p>
<p>Our event is going to log everything that happens to a Windows Event log called “Message Log”. We open our class and declare all the variables we need etc:</p>
<pre style="padding-left: 30px;">using System;
using System.Diagnostics;
using System.Threading;
using Tridion.ContentManager;
using Tridion.ContentManager.Extensibility;
using Tridion.ContentManager.Extensibility.Events;

namespace Tridion.Utilities. ExampleEventSystem {
[TcmExtension("ExampleEventSystemEventHandlerExtension")]
      public class ExampleEventSystem : TcmExtension {
           #region Local Variables
           private static EventLog messageLog = new EventLog();
           #endregion
</pre>
<p>In our constructor we will initialize out Windows Event Log and call our subscribe method:</p>
<pre style="padding-left: 30px;">          public AuditLogger() {
               Init();
               Subscribe();
          }
</pre>
<p>Create the event log:</p>
<pre style="padding-left: 30px;">          private static void Init() {
               if (!EventLog.SourceExists("TridionMessages")) {
                   EventLog.CreateEventSource("TridionMessages ", "Message Log");
               }
               messageLog.Source = " TridionMessages ";
          }
</pre>
<p>Subscribe to our events:</p>
<pre style="padding-left: 30px;">          public void Subscribe() {
               EventSystem.Subscribe&lt;IdentifiableObject, TcmEventArgs&gt;( LogMessage, EventPhases.Processed);
          }
</pre>
<p>In this case I have used all “IdentifiableObject” which is everything, the method, LogMessage, that will called when the event fires and the phase is “processed”. The method signatures for subscribing are:</p>
<pre style="padding-left: 30px;">Subscribe&lt;TSubject, TEvent&gt;(TcmEventHandler&lt;TSubject, TEvent&gt; eventHandler, EventPhases phases, EventSubscriptionOrder order)
SubscribeAsync&lt;TSubject, TEvent&gt;(TcmEventHandler&lt;TSubject, TEvent&gt; eventHandler, EventPhases phases, EventSubscriptionOrder order)
</pre>
<p>In our case we defined no subscription order so it will be “normal” order.</p>
<p>And finally define the method that will actually log our message:</p>
<pre style="padding-left: 30px;">          private static void LogMessage(IdentifiableObject subject, TcmEventArgs args, EventPhases phase) {
               String message = "Session user: " + subject.Session.User.Title.ToString();
               message = message + "\nTarget URI: " + subject.Id;
               message = message + "\nItem Type: " + subject.GetType().Name;
               message = message + "\nEvent: " + args.GetType().ToString();
               message = message + "\nPhase: " + phase.ToString();
               messageLog.WriteEntry(message, EventLogEntryType.Information, 0, 0);
          }
     }
}
</pre>
<p><strong>Configuring Tridion</strong></p>
<p>To load our event system, we must load the class responsible. This we do in the Tridion.ContentManager.config which can be found under the %TRIDION_HOME%\config directory and we add a line to the extensions section to add our assembly:</p>
<pre style="padding-left: 30px;">&lt;extensions&gt;
&lt;add assemblyFileName="C:\myevevntsystem\messagelogger.dll"/&gt;
&lt;/extensions&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.julianwraith.com/2011/02/event-systems-in-sdl-tridion-2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Five things you must know about SDL Tridion 2011</title>
		<link>http://www.julianwraith.com/2011/02/five-things-you-must-know-about-sdl-tridion-2011/</link>
		<comments>http://www.julianwraith.com/2011/02/five-things-you-must-know-about-sdl-tridion-2011/#comments</comments>
		<pubDate>Fri, 04 Feb 2011 12:15:10 +0000</pubDate>
		<dc:creator>Jules</dc:creator>
				<category><![CDATA[SDL Tridion]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[content services]]></category>
		<category><![CDATA[deployer]]></category>
		<category><![CDATA[event system]]></category>
		<category><![CDATA[online marketing explorer]]></category>
		<category><![CDATA[publishing]]></category>

		<guid isPermaLink="false">http://www.julianwraith.com/?p=630</guid>
		<description><![CDATA[It has been released and I decided to list out five things that I think are very important to the release of 2011. Mostly talk has been about the new Content Manager Explorer (and it&#8217;s cross browser functionality) but this is just the surface. Underneath there are many changes of which just five is a [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_637" class="wp-caption alignleft" style="width: 247px"><a href="http://www.julianwraith.com/wp-content/uploads/2011/02/onlinemarketingexplorer.png"><img class="size-medium wp-image-637 " title="onlinemarketingexplorer" src="http://www.julianwraith.com/wp-content/uploads/2011/02/onlinemarketingexplorer-300x219.png" alt="" width="237" height="173" /></a><p class="wp-caption-text">Online Marketing Explorer</p></div>
<p>It has been released and I decided to list out five things that I think are very important to the <a href="http://www.sdl.com/en/wcm/products/sdltridion/whats_new_2011.asp" target="_blank">release of 2011</a>. Mostly talk has been about the new Content Manager Explorer (and it&#8217;s cross browser functionality) but this is just the surface. Underneath there are many changes of which just five is a small snippet of what you can find in the box&#8230;</p>
<p>The five:</p>
<p><strong>Scalable Deployer</strong></p>
<p>To meet the demands of a large scale enterprise the deployer is now much more scalable than before allowing organizations to constantly grow their environment to meet the demands placed upon it by a growing content organization. The scalable deployer allows multiple processes to simultaneously process deployments as well as updating the publisher on how much load they can handle to avoid overloading.</p>
<p><strong>Storage Layer</strong></p>
<p>The new Content Delivery storage layer is based upon the Java Persistence API (JPA) and its concrete implementation, Hibernate.  With this you are able to expand the single Content Delivery storage layer to encompass multiple different data sources (e.g. product information or user generated content)  into one single layer.</p>
<p><strong>Online Marketing Explorer</strong></p>
<p>Drive Customer Impact with the new <a href="http://www.sdl.com/en/wcm/products/sdltridion/whats_new_2011.asp#tab1" target="_blank">Online Marketing Explorer</a>. Giving an overview of your marketing activities with a centralized model of campaigns, reporting and actionable insights.</p>
<p><strong>Content Services</strong></p>
<p>Content Services is the new RESTful webservice on Content Delivery based upon the oData and oAuth standards. You now have your published content available through a webservice to any application, mobile app, affiliate, white label site, 3rd party the list goes on&#8230; <strong><br />
</strong></p>
<p><strong>Event System</strong></p>
<p>The new fully .NET event system is modular. Does not sound like much but you can add one or more separate event systems to the same Content Management environment. Each event system can work alone hooking into different CM activities or can work together as part of coordinated event driven activities. <strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.julianwraith.com/2011/02/five-things-you-must-know-about-sdl-tridion-2011/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>I love SDL Tridion</title>
		<link>http://www.julianwraith.com/2011/02/i-love-sdl-tridion/</link>
		<comments>http://www.julianwraith.com/2011/02/i-love-sdl-tridion/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 12:10:49 +0000</pubDate>
		<dc:creator>Jules</dc:creator>
				<category><![CDATA[SDL Tridion]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[love]]></category>

		<guid isPermaLink="false">http://www.julianwraith.com/?p=623</guid>
		<description><![CDATA[Now it will not come as a surprise to many of you that I work for SDL WCMS (as a Technical Account Manager) and I have been working here for almost 8 years. In that time I have seen 11 versions of the SDL Tridion Content Manager platform of which the new 2011 version is [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.julianwraith.com/wp-content/uploads/2010/10/SDL-Tridion-2011.png"><img class="alignright size-full wp-image-591" title="SDL-Tridion-2011" src="http://www.julianwraith.com/wp-content/uploads/2010/10/SDL-Tridion-2011.png" alt="" width="200" height="51" /></a>Now it will not come as a surprise to many of you that I work for SDL WCMS (as a Technical Account Manager) and I have been working here for almost 8 years. In that time I have seen 11 versions of the SDL Tridion Content Manager platform of which the new <a href="http://www.sdl.com/en/wcm/products/sdltridion/whats_new_2011.asp" target="_blank">2011 version</a> is the latest.</p>
<p>As I love SDL Tridion I wanted to share with you the video released this week that tells, from our employees point of view, why we all love SDL Tridion so much&#8230;</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/Mmve5SGXTLE?fs=1&amp;hl=en_US&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="385" src="http://www.youtube.com/v/Mmve5SGXTLE?fs=1&amp;hl=en_US&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>PS: Don&#8217;t forget to switch it to HD!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.julianwraith.com/2011/02/i-love-sdl-tridion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Not Just Another Tridion GUI Extension</title>
		<link>http://www.julianwraith.com/2010/10/not-just-another-tridion-gui-extension/</link>
		<comments>http://www.julianwraith.com/2010/10/not-just-another-tridion-gui-extension/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 04:00:45 +0000</pubDate>
		<dc:creator>Jules</dc:creator>
				<category><![CDATA[Asides]]></category>
		<category><![CDATA[SDL Tridion]]></category>
		<category><![CDATA[extensions]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[SDL Tridion 2011]]></category>

		<guid isPermaLink="false">http://www.julianwraith.com/?p=620</guid>
		<description><![CDATA[Not Just Another Tridion GUI Extension&#8230; you&#8217;re not joking at all!]]></description>
			<content:encoded><![CDATA[<p><a href="http://yoavniran.wordpress.com/2010/10/24/not-just-another-tridion-gui-extension/">Not Just Another Tridion GUI Extension</a>&#8230; you&#8217;re not joking at all!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.julianwraith.com/2010/10/not-just-another-tridion-gui-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

