How to add a new action in the promotions view dropdown menu?

Promotions: add a new action in the dropdown menu of a view

This blog explains the steps to approach and solve a problem when having very few online resources or basic familiarity about the solution. For that, I will propose a problem statement: “Add a new option in the dropdown menu of a view that would sync a promotion to a sellable item in the merchandising dashboard.”


The very first step that I took after coming across this problem was of course to google out the relevant articles or blogs that might give me a right start or point me in the right direction, but I couldn’t find much.

So, I started thinking about this problem and writing down the very step that would be needed to introduce this new option in the menu.

Given fact:

We will have to use Entity Views and Actions API to meet this requirement as the new option must be added to an existing view’s actions.

Step 1:

Create a class that would populate this new action on the existing view.


	public class PopulateSyncPromotionToMerchandisingViewActionsBlock : PipelineBlock

Now that the option populates in the dropdown menu the next step is to meet the 2nd requirement where a form should open with a comment box.


Step 2:

Create a new view and add properties to it.


	public class GetSyncPromotionToMerchandisingViewBlock : PipelineBlock

The third requirement states that when ticking the “check” icon, the promotion should be synced to the sellable item in the Merchandising dashboard.

Step 3:

When ticking the check icon, we must create a class that would execute a command and run the sync pipeline.


public class DoActionSyncPromotionToMerchandisingPipelineBlock :

Final Step:

At this point, the command runs the sync pipeline to sync the promotion to merchandising dashboard.


public class SyncPromotionToMerchandisingCommand: PromotionsCommerceCommand
		private readonly ISyncPromotionToMerchandisingPipeline _syncPromotionToMerchandisingPipeline;

		public SyncPromotionToMerchandisingCommand(
		  ISyncPromotionToMerchandisingPipeline syncPromotionsToMerchandisingPipeline,
		  IFindEntityPipeline findEntityPipeline,
		  IServiceProvider serviceProvider)
		  : base(findEntityPipeline, serviceProvider)
			this._syncPromotionToMerchandisingPipeline = syncPromotionsToMerchandisingPipeline;

		public virtual async Task

Don’t forget to add below in ConfigureSitecore class:

.ConfigurePipeline<IGetEntityViewPipeline>(c =>




                                  .ConfigurePipeline<IPopulateEntityViewActionsPipeline>(c =>




                                 .ConfigurePipeline<IDoActionPipeline>(c =>




Hope this blog was helpful.