3

I'm interested in which mechanism is used when Also Publish/Unpublish in Child Publications option is checked. To me it's logical that this is performed by the Resolver. Besides common logic, another telltale is that via code we can set this option in the ResolveInstruction property.

If that is indeed the case, I'm interested whether it's possible to customize its functioning similar to building a Custom Resolver for manipulating resolved items, but for omitting some "resolved" Publications?

In Web 8 this can easily be done OOTB, however this question is for 2013 SP1.

EDIT:

I see that mentioning Web 8 has only caused confusion. What I meant is that in Web 8 I simply do not add a BPT to the relevant Publications and no transactions will be created for them in the queue. I want to achieve the same but in 2013 SP1.

In other words, I want an option to remove entire Publications from the set of "resolved publications" which a (un)publishing action with the Also Publish/Unpublish in Child Publications creates. So not a custom resolver for items in the Publications, but entire Publications themselves. Hope that makes sense.

UPDATE 2:

Replied here because the comment section has limited capability...

Yes, I am familiar with the concept of publication targets/target types, but such an approach would remove the capability of editors to publish from those publications altogether. Those publications are for example "content publications" or "pages publications" and they need to have the option to publish in all children so that with a single publish, the item is published in all the "site publications". Only the "site publications" are relevant for publishing from the websites' perspective.

One approach is to use a custom resolver and empty out all the transactions from the 'irrelevant' publications, but that way there are many (essentially) empty transactions created, just to be emptied in the very next step. This makes some unnecessary load on the DB and the system, clogs up the publishing queue making it impossible to use (we have publishing of (tens of) thousands of items on a daily basis), interferes with our reporting on publishing speed, etc.

What would be better is to have the option to influence the "list of resolved publications" themselves which are "calculated" based on the Blueprinting when the Also Publish/Unpublish in Child Publications is checked. So instead of working on publish transactions of irrelevant publications, my idea is to remove them somehow before they even appear. A "pre-resolver" for the irrelevant publications, but on the publication scale if you will.

In other words, I want to tap in the Also Publish/Unpublish in Child Publications and modify it's behavior. Is that possible?

1 Answer 1

2

The resolver mechanism in publishing is available since 2009 if I'm not mistaking (might even be earlier), so the simple answer to your question is, yes you can use the same Custom Resolver you would use on a Web 8 system. See https://docs.sdl.com/LiveContent/content/en-US/SDL%20Tridion%20full%20documentation-v1/GUID-F792AB1A-060A-4757-802D-3A2DB18F022D for the official documentation.

Basically if you create and compile it on an older version, you can simply move it to later versions (because of assembly redirects that are placed in newer installs).

If you would happen to already have a Custom Resolver compiled on Web 8, you will need to recompile it against 2013 or earlier DLLs in able to use it on 2013 (technically I guess an assembly redirect could also be made for this, but that is not really a recommended approach).

update

You are correct that your original question confuses things, since if you ask me your edit totally does not have any relation to what you originally asked. So I'll update my answer towards your edit.

In 2013 SP1 the publishing setup is done with a different Content Distribution setup, in Web 8 this is called the legacy publishing setup (one remark I would like to make is, you seem to have knowledge of Web 8 already, you might want to consider upgrading that 2013 system to Web 8, certainly since support for 2013 will end at some point). To configure publishing in 2013 you need to specify where you want to publish content to by defining Target Types and Publication Targets in the Content Manager (see https://docs.sdl.com/LiveContent/content/en-US/SDL%20Tridion%20full%20documentation-v1/GUID-A6CB1385-E42F-45D7-AD78-52CCEC34877A).

A Target Type is just a user-friendly name for one or more Publication Targets. When a user publishes content from the Content Manager, they need to select one or more Target Types. Content is then published to the Publication Targets associated with these Target Types. A Publication Target will then define the information required to publish content using different protocols.

So to answer your question, you are looking for the mapping of Publications to a Target Type, and that is set in the Publication Target. In here you can simply remove the Publications you don't want to be resolved. A short description of how it is done follows:

Once you created a Publication Target, you can go to the Publication tab, and simply select the Publications that can publish to this Publication Target. Next to that you select a Target Type, which will be the link between these two items. See also https://docs.sdl.com/LiveContent/content/en-US/SDL%20Tridion%20full%20documentation-v1/GUID-E3FBFF9A-387D-4F13-8399-55CE2B18FAFE

Please do keep in mind the following though, if you are planning to remove some Publications from this Publication Target, you should really consider unpublishing the content of those Publications first. Because you are going to remove their ability to be published/unpublished.

update 2

I encourage you to read the first part of my answer again, if you want to change the way resolving is done, you can do that with a custom Resolver. If you want your resolver logic to be executed first, you can change the order of its execution in the Tridion.ContentManager.config, see the example below

<add itemType="Tridion.ContentManager.ContentManagement.Component">
    <resolvers>
        <add type="MyCompany.CustomResolving.MyCustomResolver" assembly="MyCompany.CustomResolving, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e0565a33f351b321"/>
        <add type="Tridion.ContentManager.Publishing.Legacy.Resolving.ComponentResolver" assembly="Tridion.ContentManager.Publishing.Legacy, Version=5.4.0.1110, Culture=neutral, PublicKeyToken=360aac4d3354074b"/>
    </resolvers>
</add>

And optionally you could have your custom Resolver even replace the default one all together. Please note I would not recommend either of these scenarios, since they change the default behavior, but if that is what you want, than nothing is stopping you from doing it.

3
  • Updated my question to clarify what I want to achieve.
    – Atila Sos
    Oct 6, 2017 at 14:04
  • Please see Update2, replied for better readability.
    – Atila Sos
    Oct 6, 2017 at 16:48
  • @AtilaSos please see my second update following yours. Oct 10, 2017 at 13:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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