I have to give specific publishing target Type access to user using Core Service.

I have tried by giving the following

PublicationTargetData targetData = (PublicationTargetData)client.Read("tcm:", new ReadOptions());
IEnumerable<LinkToPublicationData> target Array = targetData.Publications.ToArray<LinkToPublicationData>();
targetData.Publications = targetArray.ToArray<LinkToPublicationData>();
client.Update(targetData, new ReadOptions());

But this one is for giving publishing target rights for Publication Level. But I need do it for user level. I have tried by giving

UserData schemaObj = (UserData)client.Read("tcmid of user", new ReadOptions());

but in schemaobj properties, I did not find any property related to publishing Target.


A Target Type has a so-called Access Control List which defines which Users/Groups can publish to it.

The title of your Question suggests that's what you are looking for, but in your code example, you're manipulating a Publication Target.

In general, Publication Targets are (more or less) deprecated since SDL Web 8, where Topology Manager Mappings are used instead. However, Target Types remain (and they still have an Access Control List to specify who can publish to them).

See TargetTypeData.AccessControlList in Core Service API docs.


You can create a group having restricted privileges (remove publish related privileges, you can see it under 'privileges' tab when creating group) and add the user who shouldn't have publishing right or else better solution would be to write a GUI Extension to hide the publish button in case any user doesn't belong to a specific group(only people who are part of that group can publish). In case you need GUI extension code let me know.

  • 1
    Why use a UI extension when you can easily remove access from the target type? Seems like overkill... – Nuno Linhares Jul 17 '18 at 12:51

Your Answer

