Julian Wraith

Menu Close

Tag: SDL Tridion (page 2 of 4)

SDL Tridion Community Webinar – November 2011

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 2011/2012.

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… or both.

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.

PowerTools for 2011

The SDL Tridion PowerTools are now to receive a long overdue update and rebuild. The PowerTools are there to help with those little or essential tasks in SDL Tridion. You can see more on the Google Code site.

Measuring SDL Tridion Usage with SQL

© Jeff Golden (Flickr)

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.

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.

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.
Getting the number of publications; easy to see in the Tridion interface but why not start with a basic query:

SELECT count(*) FROM publications;

Not too hard I would say…

Components created for a given day with Schema Title; 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?

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

So the crucial parts to this query are:

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 > 1” or just leave it out completely if you want both created & 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).

Total new components for a given day by user; 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):

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;

As for the first query, updates can be found by using “> 1” for the version.

Total updates/creates of items per day; this query will show you, over time, what the total of items (e.g. components, pages, folders, publications) were created per day is.

SELECT modification_date, COUNT(*) total
FROM items
GROUP BY modification_date
ORDER BY total DESC

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.

Fall in Love with SDL Tridion Publishing – Part Two

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 cannot control but that are controlled by the IT or hosting organization.

TGIF?
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.)

So what determines how long the queue takes?
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.

The Task
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.

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.

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.

The Templates
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.

The Servers
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.

The Configuration
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.

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.

4 actions to improve to improve publishing
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…

  1. 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:
    1. What is your total job load per day?
    2. How many items do these jobs consist of?
    3. How long does it take to render the items in the job?
  2. 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.
  3. Have IT analyze the performance of your servers under stress, can the performance be improved? If so, then you will gain in throughput.
  4. 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.

Five things you must know about SDL Tridion 2011

Online Marketing Explorer

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’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…

The five:

Scalable Deployer

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.

Storage Layer

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.

Online Marketing Explorer

Drive Customer Impact with the new Online Marketing Explorer. Giving an overview of your marketing activities with a centralized model of campaigns, reporting and actionable insights.

Content Services

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…

Event System

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.

I love SDL Tridion

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 the latest.

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…

PS: Don’t forget to switch it to HD!

Not Just Another Tridion GUI Extension

Not Just Another Tridion GUI Extension… you’re not joking at all!

Community challenge; YouTube CME Extension

Read the YouTube CME Extension use case and how you can get involved at Chris Summer’s blog

CME Extensions: finding the unique button IDs

In my last post I covered the example of a Tridion 2011 CME extension that would show nice pop-ups of not very useful information. For this we registered, in our HelloWorld.config, where the button  would be loaded and in our Home ribbon we register the button as:

<ext:extension pageid="HomePage" groupid="EditGroup" name="HelloWorld" assignid="HelloWorld" insertbefore="PreviewBtn">

Amongst our attributes we have the attribute insertBefore. InsertBefore tells the extension mechanism where to insert the button; in this case, insert before the Preview button. “PreviewBtn” is a keyword and it is required to get this right so the the CME knows where you intend to place your button. So how do we know what the right keyword is?

We can do this with Firebug on Firefox and it is very easy to do. Open the CME in Firefox and navigate to the ribbon (or menu) where you will want your button to appear. Turn on Firebug and select the highlight button:


Then select the button that will be after where you want your button to appear, in this case the button or Previewing content. You will then see in Firebug then div of the Preview button. The ID of the div is the ID of the button you will insert before:


In our particular example, another parameter is the “groupid” and in this case it is set with the value of “EditGroup”. This is also available in the html and can be found higher up in the HTML:


You can use other similar tools to inspect the HTML (such as CTL+SHIFT+J on Google Chrome) but I find Firebug the easiest.

Chris Summers: The SDL Tridion MVP Fondue Kit

Fellow Tridion MVP, Chris Summers has posted a sneak preview of what we did on the MVP meetup. Read more about it here.

© 2020 Julian Wraith. All rights reserved.

Theme by Anders Norén.