Setting up Sitecore Publishing Service

Dear Readers,

Thank you for the overwhelming response on my first post in the series on Sitecore 8.2  I really appreciate you all taking time and reading the post and at the same time sharing it and giving me feedback — it energizes me to write more. Oh! Did you say you missed the previous post? No worries, its here for you basics of Sitecore Publishing Service.

In this post, lets setup and configure the Sitecore Publishing Service.

As we know, that Sitecore Publishing Service is an add-on to the Sitecore environment, its quite understandable, that we need to configure 2 things, first the add-on service and second something in Sitecore application which links to the Sitecore Publishing Service. This leads us to downloading the two parts of Sitecore Publishing Service: The Service and the Sitecore Module for Service.

Download:

  1. Sitecore Publishing Service
  2. Sitecore Package

If you get an error, visit the following link and login to the Developer Portal. After downloading the above two from Sitecore Developer Portal, lets install and configure the Sitecore Publishing Service. But before that, lets install an instance of Sitecore 8.2, using anything that you like — my preference — SIM (Sitecore Instance Manager).

Installing the Sitecore Publishing Service:

We can install the Sitecore Publishing Service in two ways, manually – the way we host any website on IIS or using a PowerShell script. But here, lets discuss regarding the usual manual installation.

  1. Extract the zip Sitecore Publishing Service 1.1.0.zip to a folder – lets say C:\inetpub\wwwroot\sitecorepublishing
  2. Open the IIS Manager and create a new website in IIS and point it to the above folder. Let’s name the site sitecore.publishing and add the binding hostname as sitecore.publishing as well. iis-configuration
  3. Update the hosts file.
  4. Next, go to Application Pools in IIS Manager and open the Basic Setting of the corresponding App Pool. Make sure that the .Net CLR version is set to “No Managed Code”.app-pool
  5. In the Sitecore Publishing website folder (for our current case, C:\inetpub\wwwroot\sitecorepublishing) go to the location \config\global and create a new file with name sc.connectionstrings.xml connection-strings-publishing-service

With this Step, installation of Sitecore Publishing Service is complete.

Next, lets configure the Publishing Service to use it with our Sitecore Instance.

  1. Open a Command Prompt as an Administrator role, and go to our location C:\inetpub\wwwroot\sitecorepublishing
  2. Write the command “schematool.exe list” — This will list the databases we just configured in the 5th step above.list-of-databases
  3. Now, let’s upgrade our database schemas using the command “schematool.exe upgrade”upgrading-the-databases

Mmmm.. Now this step made me wonder, as to why this step and what changes does it make to my databases? So, my curious self went to SQL Server management studio and checked the databases and compared them with Sitecore 8.2 Plain Instance database.

tables-comparison

Does that solve the question in your mind, as to why is Sitecore Publishing Service faster? Well, it communicates directly with databases with no other Sitecore Layers in between — Just read the manifests and execute the steps — Separation of Concerns you know!

So with this change, even our databases are ready for Sitecore Publishing Service to start.

Lets check whether all our installation and configuration steps are done well or not.

To check, we’ll open http://sitecore.publishing/api/publishing/operations/status and it should return a JSON result { “Status” : 0 } as its response. If the response is anything other than this, its good to check the Publishing Service Logs.

Once the publishing Service is installed and up and running, we’ll now install Sitecore package in our instance, to connect to the Publishing Service. This installation is very simple and similar to any Sitecore Package installation. The important portion comes after the installation – as a Post Installation Step — i..e in the Sitecore.Publishing.Service.config, we’ll update the PublishingServiceUrlRoot to the URL of our Sitecore Publishing Service — in our case http://sitecore.publishing

post-installation-step

With that, we are all set to use our newly installed Sitecore Publishing Service with the current Sitecore instance.

Try it out.

Happy Publishing and Happy Sitecoring!🙂

Basics of Sitecore Publishing Service

Dear Readers,

As we all know, with Sitecore 8.2, Sitecore has introduced a new and faster alternative to Sitecore Publishing, called Sitecore Publishing Service. By default, Sitecore publishing works the way it is in its previous versions. The Sitecore Publishing Service is an add-on to Sitecore 8.2 and in case you want to use it, you need to setup and configure it. We will have a look at that in our next post. But here, lets see Why should we use Sitecore Publishing Service, its concept in brief and next a few questions that come in our mind when we talk of using Sitecore Publishing Service in our Production Environment.

Why Sitecore Publishing Service?

  • Improved User Experience (A user doesn’t need to wait for the publishing to end. The dialog doesn’t hold the user. It ends saying go to Publishing Dashboard to check the status)

publish-dialog-isnt-blocking-anymore

 

  • Better User Feedback (We get details of all the Publishing Jobs at a centralized location – the Publishing Dashboard. Also, we get required details when we click on a Job and fetch its Job Details.)

publishing-dashboard

publishing-job-details-better-feedback

  • Increased Publishing Speed – reduction of the amount of time that Sitecore takes in the publishing of the items, leading to increased throughput.

Basic Concept and Understanding:

On installing the Sitecore Publishing Service, all the features, pipelines and settings of the current system are no more used. They are replaced by the features, pipelines, settings and dialogs of the new publishing system. To understand the Publishing Service better, we should first take a look at the basic terminologies which Sitecore has come up with, related to Sitecore Publishing Service.

  • Publishing Jobs:

We all know that Sitecore Publishing happens as a Job in Sitecore. But the Job was Synchronous in nature — means a Sitecore user needs to keep his Publish Dialog open as the Job gave regular updates on the status of Publishing. If the user closes the dialog, there was no way in a normal Sitecore instance that the end user could know whether the items he/she published got published or faced some issues on the way. This in a way, was waste of time and annoying as well – where a user had to sit for a long time, waiting for the publishing to complete and receive an acknowledgement in the end.

Sitecore identified this and came up with an idea to improve the experience of an end user on Sitecore Experience Platform. Now, with Publishing Service, Sitecore has got rid of the blocking Sitecore Publishing Dialog.

  • Manifests:

A Sitecore publishing job has many tasks to be done. Collectively, Sitecore calls it Manifests. At the beginning of every Publishing Job, a Manifest is calculated by the Publishing Service. There are various conditions which the Publishing Service needs to check. These conditions include checking workflow states of the items — whether the item has reached Final Workflow state or not, checking if the current item is a media file, checking if any other item related to this item needs to be published as well and so on.

The point to note, the Manifest file is going to be one per Publishing Target.

  • Promotions:

The activity or process of moving items from the Source instance to the Destination instance, is defined as Promotion by Sitecore. The source of truth for the promotion is the activity done prior to this — the Manifest. The complex logic of which items need to be moved is already completed and mentioned in the Manifest file, next Sitecore Publishing Service simply reads the items from the Source Sitecore instance as mentioned in the Manifest and performs the action of writing the items to the destination instance.

  • Manifest Results

What follows promotions are the results. Which items were promoted and what changes were included is mentioned here in Manifest Results. It includes other activities like clearing caches on the Content Delivery servers so that the updated items are reflected. Also, as far as the CM instance is concerned, its about making the status of publishing available.

In summary, we can say Manifest is the POA (Plan of Action), Promotion the Action and Manifest Results the Retrospective.

Sitecore has represented this complete activity in a very nice pictorial way:

publishing-service-concept

Let’s have a look at some initial questions that arise in our mind, when we think about Sitecore Publishing Service in our Production environment.

Does it incur extra Sitecore Licensing Charges?

No, The Sitecore Publishing Service is available for us to use without any Extra License Cost!

How many Manifest/s are created during publishing?

Each Publishing Target gets its own Manifest. The reason behind that is very simple — the items to be added/changed/moved to one publishing target can be different – say a case where we have a Preview and a Production CD instance and only after content looks perfect in Preview it is allowed to publish to Production.

What if my Sitecore Publishing Service is down in Production environment?

This is similar to what would you do, if you need to publish something in production environment and your Sitecore instance is down — you will wait. At the same time, the Sitecore Publishing Service is an ASP.NET Website and hence it takes less time to become up and running as compared to a normal Sitecore instance.

I have a custom processor in current Sitecore publishing pipeline. Where will it fit-in now with Sitecore Publishing Service?

Aah! That’s a great question!

We all know Sitecore. They take care of all the situations in advance. I asked the same question on on Slack in PublishingService channel and on Sitecore StackExchange.

chat-publishingservice-slack

Currently, as a First Step to keep things simple, they have added just one pipeline – publishEndResultBatch pipeline.publishendresultbatch-pipeline

As we can see above, there is processor added to it.

Also, the following Event Hooks are worth noting as well.

sitecore-publishing-service-other-event-hooks

Conclusion: We all must use the Sitecore Publishing Service extensively in your local environments first — the Common Dev Environment, the QA Environment, the UAT Environment and only when you feel confident, use it in our Production environments. By this, I am not doubting what Sitecore has made, but its about our specific business case!

Happy Sitecore Publishing!

Sitecore MVP Summit and Sitecore Symposium 2016 Take aways

Dear Readers,

How are all of you? Did you attend the Sitecore MVP Summit and Symposium?

I know, its been some time Sitecore MVP Summit and Symposium happened, but better late than never!

It was great to meet so many of you in person. Firstly, Thank you Horizontal Integration (Sabin Ephrem and the whole Leadership team) for this great lifetime experience! With ~30 HIans at Sitecore Symposium, it was truly our Domain!

There were great golden nuggets that we got out of the Sitecore MVP Summit and Sitecore Symposium. Here are a few which I felt most important out of those.

  • Helix
    • Sitecore Community has grown a lot over the years, and with Sitecore maturing to be a highly used Enterprise level content management platform and having the power to connect with any third party API’s easily, there was always a need to have some guidelines and recommended practices.
    • Anyone can start development on Sitecore, but only a few implementation partners like HI really know how to do it the right way.
    • With Helix, the best thing is Sitecore has shown a direction to improve efficiency, effectiveness, scalability and maintainability of a solution, along with reducing cost and time of development in longer run.
    • The best part about Helix guidelines, is its on GitHub and the community on the whole can contribute to make it a more robust and effective set of guidelines.
  • .NET Core 1.0 and Sitecore Publishing Service
    • It’s fascinating to see Sitecore having a vision with the new technology trends and keeping up good pace in updating themselves.
    • They have launched Sitecore Publishing Service as a standalone add-on product, built on .NET Core and the best part, it doesn’t require additional license for it.
    • Moving forward, we will see a lot of core platform things being moved to .NET Core and Sitecore’s development community needs to be geared up learn and be ready with .NET Core and its concepts.
  • NuGet
    • The community was asking for making Sitecore assemblies available via nuget and Sitecore heard it!
    • The Sitecore Nuget feed is going to help the development community in getting the issues of DLL references solved to a big extent.
  • Sitecore Experience Accelerator (SXA)
    • SXA, is going to change the way Sitecore projects are implemented currently.
    • Built on the Helix principles, it’s going to be very useful for the whole team (including Front-End Back-End, Content Authors) to work on the Sitecore platform almost in parallel and thus reduce the amount of time taken for a website to go live.
    • Currently, various teams in an implementation firm, work simultaneously by following their own best practices. With SXA, things will be streamlined for good.
  • Sitecore User Voice
    • I think we should call this Sitecore Democracy!
    • You have an idea, which can make your and life of other developers/marketers/Sitecore users better?
    • Go ahead and submit it, share it, discuss it with other community members and if they like it, they vote for it.
    • And based on the community response, Sitecore will prioritize it into their own queue.
    • This is the way Sitecore is going to do Idea Management from anyone in the Sitecore Community.
  • Sitecore Commerce
    • Sitecore is accelerating into the Commerce world with a whole new Revamped Commerce Engine, which is built from scratch on .NET Core 1.0
    • It’s going to be the next big thing in the market.

Along with these, it was a great experience presenting at Sitecore Symposium on Sitecore Print Experience Manager along with Dave Michela, Andy Cohen, Dan Sinclair and JD Little.

symposium-presentation

A few great moments at Sitecore MVP Summit and Sitecore Symposium.

You can also check Kiran Patil’s post on his takeaways from the Symposium.

https://sitecorebasics.wordpress.com/2016/09/19/sitecore-mvp-summit-and-symposium-basics-from-the-field/

See you all next year in Vegas!

 

Happy Sitecoring!🙂

Sitecore PXM: Reordering pages in InDesign CC 2014

Dear Sitecorians and Designers,

Sorry for being away from my blog for a very long time. I was busy with a lot of things happening on personal and professional front. But, here I am sharing some of more experiences related to new encounters with various Sections of Sitecore!

Hope you are enjoying using Sitecore PXM with Indesign and creating amazing documents from Sitecore Items?

Challenge: Reordering Pages in InDesign and storing the order in PXM Projects

While working, a few designer friends asked the development team – Hey, how do we store the reordering of the pages done in InDesign back to Sitecore?

The thing that we have noticed, is that Design Team generally uses Pages Tab in InDesign toolbox to reorder the pages. But obviously, how can that be stored in Sitecore.

When we are confused with directions on Life, we go to God, and when we were confused with things in Sitecore, we approach Sitecore Support team. And that’s what we did.

Steps we tried:

  1. Designer loads the Print Studio project in Adobe InDesign.
  2. There are already some pages available, which were created previously.
  3. The designer adds a new page to the Project, using the (+) button on the top in Projects Tab – The page gets added and is placed as the last page in Pages Folder.
  4. As the page is a cover page, the designer tries to reorder the page to the beginning of Print Studio Project – or the main Document – but there is no such way in the options in the Projects tab Also, Drag and Drop in the Projects Tab – on the Pages Folder – creates a new page.
  5. So the designer goes to the Pages Tab – right-clicks on the page to be moved and moves it to the desired location – but the change isn’t reflected in the Projects Tab, where the Print Studio project is loaded.
  6. There is no way to save these changes – if at this point, the Save button or Save to Current Item button is clicked, the prompt says “You have not selected any valid page items.”
  7. Next, the designer goes to the specific page in and clicks save and Save Item works – Save Layout
  8. The Designer closes the document, refreshes the document and loads the Print Studio Project again, but the page reordering changes are lost.

Solution:

The solution was pretty simple, instead of using the Pages tab to reorder, we need to use the Arrow Buttons given in the Sitecore Connector – Logical as well – as that’s the way it would be able to communicate the change from within InDesign to Sitecore.

This is how it can be done:

Project Tab-reorder options

Special thanks to Paul Kravchenko for helping us out with this.

Happy Sitecoring!🙂

Getting a Designer familiar with Sitecore InDesign Connector for Adobe InDesign

Hi Sitecorians and Designers,

Today, let’s have a look at an important part of the Sitecore Print Experience Manager (PXM) — the Sitecore InDesign Connector — for Adobe InDesign and get well-versed with it.

First and foremost, lets install the Sitecore InDesign Connector from the Sitecore Developer Portal. For  (Sitecore 8.0 Update-1) click here and if you are looking for Sitecore 8.0 Initial Release check here.

Once installed, open Adobe InDesign and in the Menubar click on the Window menu, we can now see a new option down there – called Sitecore.

Step-1

Click on project and make the panels available. To work in a simpler way, drag and pull the projects tab out from the whole chunk and put it different.

Step-2

Now, click on the small down arrow in right top corner and go-to Plug-in Settings:

Step-3

Add the URL of your Sitecore instance — http://scpxmpoc in my case — and click OK.

Step-4

Next, Login to Sitecore using the normal Admin user.

Step-5

Do not forget to select the Web Server URL we just entered.

Step-6

Once logged in, we can see the Sitecore Content Tree in the content tab. And, in the Libraries tab, we have the PXM Projects. If any of this is not seen make sure you press the Refresh button in the tab – (placed the right-most in the toolbar of the tab)

Now, we have 2 options – working with an existing project or creating a new one. Lets look at both of them.

Working with an Existing Project:

Drag and drop a Project from the Libraries tab to the Project Tab onto the refresh button.

Step-8

We will be able to see the whole structure of the PXM Project.

Next, select the PXM Project, and click on the Load Project button.

Step-9

This will load the PXM project as a document into the Adobe InDesign. Now, make all the required changes to the project – Add required components – text frames, image frames, etc – and save back the content in Sitecore.

Step-10

The PXM project can be exported to PDF and checked like a normal INDD file. This was about when a PXM Project already exists.

Lets look at the case, where we need to create a new PXM Project.

Working with a New PXM Project:

In the Libraries Tab, select the Print Studio Projects Item and click on ‘+’ button to add a new PXM Project. I’ll name this one as Sitecore Endeavor Demo PXM Project. Type the name and click Ok.

Step-11

Next, Open an InDesign File (.indd file) which we want to use for the formatting for our PXM Project. This is what we call – a Master Document. Once the .indd file is open in Adobe InDesign, in the Libraries tab, select the Folder called Master Documents and click on the add (+) button.

Step-12

Basically, what this does is saves the document into Sitecore as a Master Document (ideally, uploads it from here to Sitecore) as a formatting to be used for the PXM Projects. I’ll name this as Launch Sitecore Document.

Next, we load drag and drop the project into the Projects tab – similar to what we did while working with the previously existing project section.

Step-13

As this is a new project, it doesn’t have any document or snippets or components – So lets start adding them. We can add them using the Add (+) button in the toolbox above. And after we add the document in the project, we can change its master to the one we just uploaded. By default, the Default master is selected by Sitecore. So lets go and change it. For that, we need to drag and drop the Master document we just created in Sitecore, to the Document in Projects Tab

Step-15

Now, we can create a page below, again using add (+) button, and then drag and drop content item fields from the Content Tab onto the page – which will by default create a snippet and the Components which Sitecore PXM can understand into the PXM Project.

Step-16

Next, select all the components we just added onto the page, and drag and drop it onto the page in Projects Tab. They will get added in a snippet onto the page and get saved back to Sitecore.

Step-17

Again, once the changes are done, we can export the PXM project as a PDF.

Happy Sitecoring and Happy Adobe InDesigning!🙂

Configuring InDesign Server CC 2015 for Sitecore PXM

Dear Sitecore Family,

This post is in continuation of the previous post. As it was getting very long, it would become un-interesting and hence I divided into two.

In case you missed the first post, you can check it out here.

For this, we can refer to the PXM Server Installation Guide. As the steps are pretty straight forward, I won’t be going into the details of these, but just state the actions.

This includes 3 main actions

  1. Installing Dashboard Server and InDesign Processing Service – which we can found here and ensure that the Dashboard WebService is running at the following port: http://localhost:8070/DashBoardWebService
  2. Configuring Changes in Sitecore PXM Config, Dashboard Service and Processing Service – as specified in the PXM Server Installation Guide.
  3. Next is Setting up the PXM Publishing Folder

For the third, basically there is already a folder created at the location: C:\PXMPublishing

Add the directory C:\PXMPublishing\PublishFolder as a virtual directory in IIS Manager Website, which is the PXM Sitecore instance.

Virtual-Directory-PXM

Next, go to SDN and download a zip from APS (which is the previous version of PXM) – which has the exact configurations that a PXM Publishing folder should have. The link is :  https://sdn.sitecore.net/Products/Adaptive%20Print%20Studio/APS%201,-d-,4/Download/14_140929.aspx

Download the Zip APSPublishing.zip  – unzip it. It contains the exact required folder structure. It contains all folders and files that you need to be able to publish with InDesign Server and store files. Give full Control to Network Service at the parent location – PXMPublishing directory.

With this, the Installation and Configuration of the InDesign Server for Sitecore PXM is complete!

Important tip:

With the Virtual Folder available we can access the PDF File in the Publish Folder directly in browser. This is how you can do it:

My Sitecore instance name is scpxmpoc – so when i access a PDF File as

http://scpxmpoc/PublishFolder/Another-Launch-Sitecore-Article_Workflow_635914174879217629.pdf

This is how it looks:

PDF-in-Browser

Happy Sitecore PXMing!🙂

Installing InDesign Server CC 2015 – Troubleshooting for Sitecore PXM

Hey Fellas!

Recently, I have been busy working on a project on Sitecore Print Experience Manager. And I must say, Sitecore PXM is awesome!

If you are interested in knowing more and understanding what Sitecore PXM is, I would suggest referring to the Sitecore PXM Video Series by Mark Demeny.

During the beginnning of the project, we installed and configured a trial version of Adobe InDesign Server CC 2015 and faced a number of challenges while doing so. The solution was not easy to find. I thought to write about it, maybe it helps someone using Adobe InDesign Server CC for that matter.

After I installed the InDesign Server CC 2015, I went to the installation location (C:\Program Files\Adobe\Adobe InDesign CC Server 2015) and clicked on the InDesignServerService.msc it gave me the following error.

InDesign-Server-Event-Viewer

These are the steps that I followed and as below:

Go to Command Prompt as Administrator and go to the location where InDesign Server is installed. In my case it was C:\Program Files\Adobe\Adobe InDesign CC Server 2015

  • First, uninstall InDesignServerService

InDesignServerService.exe /install /u

  • Register the 64-bit version of InDesignServerMMC as our machine is 64-bit.

\regsvr32 InDesignServerMMC64.dll

– I registered the 64 bit version of the DLL — and Bingo! The above error was gone!

  • Next, open MMC Snap in from command line
  • add InDesignServerService.msc
  • install InDesignServerService

InDesignServerService.exe /install

  • Right-click on InDesignServerService folder in left-pane and choose New > New InDesignServer-instance
  • specify port and other options – I have selected 8088
  • open Services, start InDesignServerService

InDesignServerService

  • Open Services.msc
    • Open properties of InDesignServerService
    • Set Startup type to Automatic
    • Go to Logon tab and ensure that Local System Account is set and Allow service to interact with desktop is checked.

But, even after doing all these steps, the InDesign Server wasn’t starting.

Okay, you want to know how did I understand that InDesign Server wasn’t starting?

Well, that is because the SOAP response on browser wasn’t available at http://localhost:8088/service?wsdl  – where I had configured the InDesign Server.

Next, opening Console and typing InDesignServer -errorlist it showed me the following error:

InDesign-Licencing-of-Trial-Version

Aah, so that’s what all was about!

Going into the details, I found that it was because the trial license wasn’t installed while installing the Adobe InDesign Server and that we need to specifically install it. Thanks to this link: https://helpx.adobe.com/indesign/release-note/indesign-server-cc-release-notes.html

For that, we need to download APTEE – Adobe Provisioning Toolkit Enterprise Edition – from here: http://www.adobe.com/devnet/creativesuite/enterprisedeployment.html

Next, I installed the Adobe Provisioning Toolkit Enterprise Edition and then fired the following command in the command window:

adobe_prtk –tool=StartTrial –leid=V7{}InDesignServer-11-Win-GM

and restarted the InDesignServer Services:

InDesignServer-Services

Tadaa!! The InDesign Server was giving the SOAP response now.

Soap-Response

With that, installation of InDesign Server is completed.

Check out the next post, in continuation to this one, which explains configuring the InDesign Server and the corresponding Sitecore instance with which we are planning to connect it.

Happy InDesigning!🙂