Is SDL Web (Tridion) well-suited for your organization – Part I

Recently, the web content management system has completed around 2 decades in existence and is now an integral and essential part of any organization – small or large, start-up or an established one, a focused player or the conglomerates.

The biggest challenge I have seen that this Web CMS space is quite crowded with tons of WCMS (get a glimpse of a partial list of available WCMS HERE) – and deciding on “That One” WCMS to fulfill the need of your enterprise is a gigantic task.

The SDL Web which have come ages from Tridion R5.x to SDL Tridion 2011 to SDL Web 8 and improvised a lot in terms of features, architecture, adoption of new technologies, connection to the community and ability to execute is one of the leader in this space.

I try to summarize on the facts and figures whether SDL Web is a right fit for your organization.

Is SDL Web suitable for your scenario?ScenarioConclusion:
If you have an enterprise level website which may have multiple tenants and/or require delivery of content in multiple language and/or on multiple channels like mobile web, mobile app, emails etc. and/or you need to reuse you content efficiently across the websites, then, SDL Web is for you.

However, if you have a simple informational website or an e-commerce store, i would suggest exploring further options.

NEXT > Part II

Advertisements
Tagged with: , ,
Posted in SDL Tridion

SS4T 2.0

I pleased to announce the release of SS4T 2.0

What’s New:

  • Support for Web 8
  • Support for Solr version – 6.3.0
  • Optimization related to code
  • Enhanced caching
  • Bug fixes

Below are the resources which can be referred SS4T 2.0:

  • Deployment Package:

https://github.com/pankaj-gaur/SS4T/tree/master/Deploy

  • Code Base

https://github.com/pankaj-gaur/SS4T

  • Document

https://github.com/pankaj-gaur/SS4T/tree/master/Documents

Posted in SDL Tridion

The return of “deploy duplicate binary” and Publishing crashing

Scenario:
We have had an interesting issue where when we sent a large batch of components and pages for publishing in a SDL Web Cloud and DXA environment – After publishing many of these items, the publishing got stuck in different phases like “Waiting for publishing”,
“Waiting for Deployment” etc. and after few hours eventually it failed for all items.

Analysis:
Different teams were analyzing and working to resolve this to find that few of those transactions (1 in 100s) is giving the infamous “deploy duplicate binary” error which is quite weird while DXA is in use.

After further analysis, it turned out that in some cases this single failing of multimedia component publishing eventually crashing the entire Publishing ecosystem and failed all items in the entire publishing queue. Any further publishing would also starts stuck in the queue and eventually fails.

Root Cause:
The failed multimedia is big in size (~ 100 MB PDF files) and stay in memory till default retry of 10 times – this takes some time and keep eating the memory. At the same time if a big chunk of items is waiting in the queue for publishing, this has adverse effect on the memory utilization which further leads to the crashing of the publisher due to “Out of Memory”

Moral of the story:
It seems the publishing queue is completely transaction based and execute each transaction batch in isolation, however, there seems some unexpected factors which may affects the publishing process – So a failure of an item in a publishing queue CAN cause failure of other batches of publishing items.

 

Posted in SDL Tridion

Web 8, DXA and Working with Audience Manager CD API

Recently, I got a chance to work on a migration project on Web 8 and DXA which is using a lots of functionality on the website through audience manager like User Registration, Login, Personalization of content and documents etc.

While, the audience manager API sounds good on CM side, on the CD side the audience manager API is quite restricted in the capabilities.

I am just mentioning here how to use this (if ever there is a need) and few examples.

Before we jump on the examples; following are notes:

  • To starts with, you need to get the Audience Manager CD API – You can install the Sdl.AudienceManager.ContentDelivery.dll from the nuget
  • The Audience Manager CD API, can only work with a single contact at a time – so you can not fetch a list of all users in a address book, filter contacts based on a particular attributes or query contacts – At max you can get details of a contact based on unique identification.
  • There is no method to identify whether a Contact exists in the Audience manager

Examples:

  1. Getting a contact from Audience Manager based on the email id:
    using Sdl.AudienceManager.ContentDelivery;
    ....
    ....
    Profile.Contact contact = Profile.Contact.FromEmailQueryString("<email address of contact>");
  2. Getting a contact from Audience Manager based on the contact identification key:
    Profile.Contact contact = Profile.Contact.FromIdentificationKeys("<identification keys>");
  3. Getting extended information of a contact like First Name, Last Name, Contact Number etc.
    Profile.Contact contact = Profile.Contact.FromEmailQueryString("<email address of contact>");
    
    string strValue = contact.ExtendedDetails["fieldName"].StringValue;
    //examples:
    string firstName = contact.ExtendedDetails["FirstName"].StringValue;
    DateTime dob = contact.ExtendedDetails["dob"].DateValue;
    int age = contact.ExtendedDetails["age"].IntegerValue;
  4. Creating a new contact in Audience Manager:
    Profile.Contact contact = new Profile.Contact();
    contact.Enabled = true;
    contact.CreationDate = DateTime.Now;
    contact.SubscribeStatus = Profile.SubscribeStatus.Subscribed;
    contact.ExtendedDetails["fieldName"].StringValue = "fieldvalue";
    //examples
    contact.ExtendedDetails["EMAIL_ADDRESS"].StringValue = "email-address";
    contact.ExtendedDetails["FIRSTNAME"].StringValue = "FirstName";
    contact.ExtendedDetails["LASTNAME"].StringValue = "LastName";
    ....
    ....
    contact.Save()
  5. Creating a new contact in a specific Address Book in Audience Manager
    Profile.Contact contact = new Profile.Contact();
    contact.Enabled = true;
    contact.CreationDate = DateTime.Now;
    contact.SubscribeStatus = Profile.SubscribeStatus.Subscribed;
    contact.ExtendedDetails["fieldName"].StringValue = "fieldvalue";
    
    contact.AddressBookId = 5; // the ID of the desired address book
    
    contact.Save()
Tagged with: , ,
Posted in SDL Tridion

SDL Web Cloud – My first experience and learnings

Recently I got a chance to work with large migration from SDL Tridion 2013 SP1 to SDL Web8 Cloud – while it might sound as if we are implementing with Web 8 with all our infrastructure on some Cloud – it is in fact quite a different experience all together in terms of development, deployments, project management, UAT etc.

Below is a list of few points I would like to share about my learning:

Disclaimer: Please note this is my own experience while working with SDL Web cloud and you might have a different experience on few of the items while working with it

Development and Implementation

  • The development and implementation on an SDL Web Cloud environment might not be the same experience as we have it against an SDL Web Installation on local server or AWS machine.
  • You need to work with Amazon Workspace tool – https://aws.amazon.com/workspaces/ to connect to the Workspace environment and execute your development there
  • There is an AWS Marketplace – https://aws.amazon.com/workspaces/applicationmanager/awsmarketplace/ –  from where you can purchase/download software needed for your development like Visual Studio etc. or you may install your own software if you have valid licenses
  • AWS Workspace have a associated licenses cost per developer – so you also need to identify how many developers would be there using the Amazon Workspace
  • At maximum, it might happen that you may get Discovery service URL accessible from your local machine which you may use to develop remotely
  • In case you have a Custom Database in use – you must check whether this will be supported in the SDL Web Cloud and if yes, how and what would be the connetivity. Typically, you won’t be able to access any Custom DB in case it is deployed in the SDL Web Cloud environment from your local machine as that has to be deployed as an RDS instance and may only be allowed to access it (in case it is at all) from the Amazon Workapce environment

Deployment

  • You may not get privilege to access the environments and deploy your application at your ease – You may need to get a support account to SDL’s ticket system and raise your request through it for deployment. Based on the priority of your request this will be taken in execution – In my case, there was no well defined SLA for a ticket to deploy
  • In case you need to debug, investigate or get any information or logs from the environment – you won’t get a privilege to access them at your own ease but have to request them from SDL through their ticketing system

Supported and Out-of-Support stuff

  • One very important aspect of SDL Web cloud is the upgrade – you would always be with the updated SDL Web version. As per the best of my knowledge, the SDL Web version would upgrade to next version every quarter.
  • The Supported items list for SDL Web 8 on premise and SDL Web8 on cloud is different – this means if a latest SDL Web 8 based application is working on your local infrastructure would not gurantee to work on the SDL Web Cloud
  • Typically, everything marked as deprecated (but still working) in SDL Web 8 will not be supported in SDL Web 8 Cloud
  • The most obvious thing – legacy mode installation is not possible with SDL Web8 cloud.
  • No Additional software installation is possible unless supported by SDL – for example: Setting up a new SOLR instance might not be supported and you may need to rely on AWS Cloud Search instead.

Disclaimer: Please note this is my own experience while working with SDL Web cloud and you might have a different experience on few of the items while working with it

Tagged with: , ,
Posted in SDL Tridion

SDL Web 8, DXA and Chrome – A funny situation

I have recently been working with an implementation involving Web 8 and DXA.
During the implementation we put couple of redirects such  redirect from

https://dns.com

to

https://dns.com/en/home

However, I am continuously getting the below error:

404 - Resource Not Found

Careful investigation suggests that a “traiing” slash is getting added to the redirected URL as –

https://dns.com/en/home/

I keep on investigating by looking at the code, redirect rules, searching over search engines but nothing leads to a resolution. I even tried to look into the DXA framework code to search for any hint but no luck.

Further googling links me to this 2 year old bug in Chrome browser:

https://bugs.chromium.org/p/chromium/issues/detail?id=339054

which is supposedly fix in a later version two years back itself

Curiously, I tried hitting the URL in other browser and to my surprise it works fine without any issue and as expected.

In the above post last couple of comments (from this year) suggests a browser cache clean (for some other behaviour though) – but I give it a try…and woo hoo!!! It starts working in Chrome too.

Moral of the Story: Technology is Technology – an error might exists anywhere, even at those places you may never imagined.

Posted in SDL Tridion

DD4T & DXA Merging – Why it is happening?

Few weeks back, I got honored to attend my third MVP retreat and those who really thinks we simply drink beer during this retreat (as few of connection really reacted that way and asked If I am not too drunk can I help them with something :P), we indeed get a privileged to connect with great mind in the industry and SDL technologies and got a chance to collaborate on future of SDL and related technologies.

This year, the group focus was on taking out the best from DD4T and DXA and merge them in a new framework to get the best of both world and create more powerful framework – so a win-win situations for customers as well as vendors/partners/consultants involved in a typical SDL implementation.

Why this merging?
Few years back DD4T comes in existent to provide a framework with possible best practices to use while implementing a website using SDL Tridion system and MVC. This aims to provide a smooth and faster development and adapting to the developers faster who may not have much deeper knowledge of Tridion but MVC (.NET or Java side).

Followed to DD4T, another framework introduced to have already baked frequently used modules in website so as to provide a prototype of website and further reducing the development time. At the core this is also using most of DD4T – initially it is termed as Tridion Reference Implementation (TRI) later renamed to SDL Tridion Reference Implementation (STRI) and finally to Digital Experience Accelerator (DXA)

Both these frameworks were aimed to provide a short development time while still keeping the best practices recommended by the experts in the area and provides noobs a smooth and faster learning curve while meeting the company/customer objectives faster.

Now at one end SDL Tridion has gone through a tons of architecture changes and advancements in the form of SDL Web8 and at the other end massive improvements has been done in the DD4T as well as DXA – This has resulted in branching out of these two solutions from a common goal.

The End Result: Both DD4T and DXA are now competing each other where architects across companies are evaluating both DD4T and DXA to choose which framework to use – The initial aim was both of these framework to complement each other.

This prompts the team behind these two framework to collaborate and agree to combine these two frameworks in one powerful framework to further enhance the development experience.

 

Posted in SDL Tridion