3

Is it possible to configure Web 8.5 Experience Manager with legacy publishing and not configure any Discovery Service or Topology Manager?

Asking for a friend...

Our definition of legacy publishing is using publication targets with a HTTPUpload configuration in IIS. Our system is publishing static content and is not using any database connection or delivery functionality of Tridion.

Update: I was able to disable Session Preview and statically configure Experience Manager. However, my issue now is that when I finish editing on a Page, the publish that is submitted is failing.

{"ids":["tcm:22-2916450"],"instruction":{"targets":["tcm:0-2-65537"],"activateWorkflow":true,"resolveContentItems":true,"resolveComponentLinks":true}}

The publish instruction being submitted is passing a Publication Target, rather than a target type. Throwing the following error:

{"ExceptionDetail":{"HelpLink":null,"InnerException":null,"Message":"</tcm:Line></tcm:Line></tcm:Error>","StackTrace":" at Tridion.Web.UI.Models.TCM54.R5Publishing.PublishItems(String[] ids, PublishInstruction instruction)\u000d\u000a at Tridion.Web.UI.Models.TCM54.Publishing.PublishItems(String[] ids, PublishInstruction instruction)\u000d\u000a at SyncInvokePublishItems(Object , Object[] , Object[] )\u000d\u000a at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)\u000d\u000a at Tridion.Web.UI.Core.Extensibility.DataExtenderOperationInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)\u000d\u000a at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)\u000d\u000a at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)\u000d\u000a at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)\u000d\u000a at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)","Type":"System.Exception"}

Update: The system really wants Topology Manager to be configured. If it's not, it falls back to an old method call that is returning my publication target. I remember when Tridion used to publish with both Target Type and Publication Target, but those days are long gone. I am going to try to partially configure TTM to see if I can bridge the gap.

  • The 8.5 documentation covers XPM setup for the deprecated "legacy" publishing and for the in-process APIs. It also describes the discovery service setup needed for XPM. I'll let others answer properly, but perhaps some discover service setup is needed but not Topology Manager? – Alvin Reyes Dec 27 '18 at 14:36
  • @AlvinReyes, thank you for the links but I guess there are levels of "legacy". We are about as legacy as it get until the old publishing framework is removed. I found a solution below and will reply if the vendor does. – Trevor Bartlett Dec 27 '18 at 18:36
2

Topology Manager was a no go. There is not enough data points to give the information that is needed. So I made a band aid with the EventSystem and found the TargetType from the PublicationTarget that is supplied during the publish call.

        // If the targets that are being published to have a publication target in them, let's fix them
        if (args.Targets.Any(target => target.Id.ToString().EndsWith("65537")))
        {
            PublicationTarget pubTarget = null;
            List<PublishingTarget> fixedTargets = new List<PublishingTarget>();

            // Loop the publishing targets looking for the bad guys
            foreach (PublishingTarget target in args.Targets)
            {
                // Find the publication target, turn it into a target type, and add it to our good list
                if (target.Id.ToString().EndsWith("65537"))
                {
                    pubTarget = (PublicationTarget)session.GetObject(target.Id.ToString());
                    fixedTargets.Add(pubTarget.TargetTypes.FirstOrDefault());
                }
                else
                {
                    // If the target was good, keep it
                    fixedTargets.Add(target);
                }
            }
            // Replace the bad target list with our good one
            args.Targets = fixedTargets;
        }

I update it to a proper publish request before its committed. I am not proud of any of this to be honest. Our method of Tridion implementation will become obsoleted soon and should not be mimicked...but maybe this will help someone else in the same boat.

I have a ticket open with the vendor as well on this last bit about the PublicationTarget being returned. I will update my answer if they come back with something different.

Cheers...

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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