As a follow-up on the previous post Move Items Between Publications, I created a simple command line utility that promotes or demotes an item using Core Service.
The program is available in this blog's GitHub repository BluePrint Move Item.
Usage parameters:
The .config file specifies the Core Service endpoint and basicHttp user/password. Note the new endpoint for SDL Web 8:
The following example promotes (moves up) an item to a parent Publication:
The code highlights below are the actual worker methods:
where the instruction object defines how to deal with errors/warnings, and it can be configured to fail on Warnings or just on Errors:
The result of the promote/demote method is an object of type OperationResultDataOfRepositoryLocalObjectData that contains the possible warnings in the result and the result object data itself.
Note that if a move operation fails, it will actually throw an exception and in its Message property we can find the reason(s) that caused the failure.
The program is available in this blog's GitHub repository BluePrint Move Item.
Usage parameters:
- promote | demote -- the action to perform
- itemTcmUri -- the item to move
- destinationPublicationTcmUri -- the Publication to move item to
The .config file specifies the Core Service endpoint and basicHttp user/password. Note the new endpoint for SDL Web 8:
http://cem.tridion.com/webservices/CoreService201501.svc
Mitza.MoveItem.exe promote tcm:3-37 tcm:0-2-1
Connect to CoreService http://cme.tridion.com/webservices/CoreService201501.svc/basicHttp
Connected as Administrator (IP-AC150874\Administrator)
Original item: tcm:3-37 | Publication: "020 Content"
Moved item: tcm:2-37 | Publication: "010 Schema"
The following example demotes (moves down) an item to a child Publication:
Mitza.MoveItem.exe demote tcm:2-37 tcm:0-3-1
Connect to CoreService http://cme.tridion.com/webservices/CoreService201501.svc/basicHttp
Connected as Administrator (IP-AC150874\Administrator)
Original item: tcm:2-37 | Publication: "010 Schema"
Moved item: tcm:3-37 | Publication: "020 Content"
client.Promote(itemId,
destinationPublicationId, instruction, readOptions);
client.Demote(itemId,
destinationPublicationId, instruction, readOptions);
OperationInstruction instruction = new OperationInstruction { Mode = OperationMode.FailOnError };
OperationResultDataOfRepositoryLocalObjectData result = client.Promote(componentId,
destinationRepositoryId, instruction, readOptions);
if
(result.ValidationWarnings.Length > 0)
{
Console.WriteLine("Validation warnings:");
foreach (ValidationWarningData warning in result.ValidationWarnings)
{
Console.WriteLine("\tMessage:{0} | Source:{1} | Location:{2}",
warning.Message,
warning.Source, warning.Location);
}
}
Comments