﻿#### 

While finishing order feature implementation for my current project I found one strange error message in commerce logs:

ERROR PipelineAbort:Orders.block.ValidatePendingOrder: Order 'Entity-Order-6d0f7501af7342c6b4534a18449f8abe' has MinionDelayPolicy: Delay=180

Ok…pipeline was aborted, because MinionDelayPolicy has delay for 180 seconds. It was a surprise for me, because I expect that my order processing will be done immediately without any delays. 

 Sitecore Commerce 9: MinionDelayPolicy and PipelineAbort:Orders.block.ValidatePendingOrder: Order has MinionDelayPolicy: Delay=180

I started investigate why I have this delay and found MinionDelayPolicy:

```
 public class MinionDelayPolicy : Policy
  {
    public MinionDelayPolicy()
    {
      this.ReleaseDelaySeconds = 180;
      this.CompleteDelaySeconds = 420;
      this.LogDelays = false;
      this.ZeroDelayRoleTrigger = "ZeroMinionDelay";
    }

    public int ReleaseDelaySeconds { get; set; }

    public int CompleteDelaySeconds { get; set; }

    public bool LogDelays { get; set; }

    public string ZeroDelayRoleTrigger { get; set; }
  }
```

As you can see, by default we have two delays for release and complete orders. But also in this policy we have any property ZeroDelayRoleTrigger, which has value “ZeroMinionDelay”.

My error was throw by ValidatePendingOrderBlock:

```
[PipelineDisplayName("Orders.block.ValidatePendingOrder")]
  public class ValidatePendingOrderBlock : PipelineBlock<PendingOrdersMinionArgument, Order, CommercePipelineExecutionContext>
  {
    private readonly IFindEntityPipeline _findEntityPipeline;

    public ValidatePendingOrderBlock(IFindEntityPipeline findEntityPipeline)
    {
      this._findEntityPipeline = findEntityPipeline;
    }

    public override async Task<Order> Run(PendingOrdersMinionArgument arg, CommercePipelineExecutionContext context)
    {
      
      MinionDelayPolicy minionDelayPolicy = order.HasPolicy<MinionDelayPolicy>() ? order.GetPolicy<MinionDelayPolicy>() : context.GetPolicy<MinionDelayPolicy>();
      DateTimeOffset? dateCreated = order.DateCreated;
      if (dateCreated.HasValue)
      {
        dateCreated = order.DateCreated;
        if (DateTimeOffset.Compare(dateCreated.Value.AddSeconds((double) minionDelayPolicy.ReleaseDelaySeconds), DateTimeOffset.UtcNow) > 0)
        {
          if (minionDelayPolicy.LogDelays)
          {
            context.Logger.LogInformation(string.Format("{0}: Ignoring pending order '{1}' not yet ready to be released due to MinionDelayPolicy={2}", (object) __nonvirtual (pendingOrderBlock.Name), (object) order.Id, (object) minionDelayPolicy.ReleaseDelaySeconds), Array.Empty<object>());
          }

          context.Abort(string.Format("{0}: Order '{1}' has MinionDelayPolicy: Delay={2}", (object) __nonvirtual (pendingOrderBlock.Name), (object) order.Id, (object) minionDelayPolicy.ReleaseDelaySeconds), (object) context);
          return order;
        }
      }
      return order;
    }
  }
```

It means that by default it will Ignore pending order, because order isn’t yet ready to be released due to MinionDelayPolicy.

Also I found that OrderPlacedZeroMinionDelayBlock uses MinionDelayPolicy:

```
[PipelineDisplayName("Orders.block.OrderPlacedZeroMinionDelay")]
  public class OrderPlacedZeroMinionDelayBlock : PipelineBlock<Order, Order, CommercePipelineExecutionContext>
  {
    public override Task<Order> Run(Order order, CommercePipelineExecutionContext context)
    {
      Condition.Requires<Order>(order).IsNotNull<Order>("The order can not be null");
      MinionDelayPolicy delayPolicyContext = context.GetPolicy<MinionDelayPolicy>();
      if (context.CommerceContext.PolicyKeys().All<string>((Func<string, bool>) (p => p != delayPolicyContext.ZeroDelayRoleTrigger)))
        return Task.FromResult<Order>(order);
      MinionDelayPolicy policy = order.GetPolicy<MinionDelayPolicy>();
      policy.CompleteDelaySeconds = 0;
      policy.ReleaseDelaySeconds = 0;
      return Task.FromResult<Order>(order);
    }
  }
```

This OrderPlacedZeroMinionDelayBlock can disable delays, if we will have in the request headers PolicyKeys= ZeroMinionDelay

![commerce MinionDelayPolicy](https://www.brimit.com/-/media/images/blog/delay2.png?la=en&amp;hash=0BE1D1D246A8130B612895E215DA19A2)

This small trick can disable delays for order processing if you need.

###### Author

[!\[apaliakou\](https://www.brimit.com/-/jssmedia/feature/blogs/authors/apaliakou.jpg?h=216&amp;iar=0&amp;w=360&amp;hash=5BE96F17AE5B47F66D9F684B87773675)
Andrei Paliakou
Sitecore MVP/ Lead Developer](https://www.brimit.com/blog/author?authors=Andrei%20Paliakou)

#### More on Sitecore

[!\[How Vercel Will Help You Save Effort When Deploying Sophisticated Sitecore Projects\](https://www.brimit.com/-/jssmedia/project/brimit/blog/2024/vercel_cover-image.png)
#Guides#How-toDXPE-commerce
##### How Vercel Will Help You Save Effort When Deploying Sophisticated Sitecore Projects
Optimize and accelerate the development and deployment of complex multisite Sitecore projects.
Alexei Vershalovich on July 17, 2024](https://www.brimit.com/blog/how-vercel-will-help-you-save-effort-when-deploying-sophisticated-sitecore-projects)

[!\[Training Up Tomorrow's Sitecore MVPs: a Mentoring Success Story\](https://www.brimit.com/-/jssmedia/project/brimit/blog/2023/sitecore-mentoring---cover-image.png)
#How-toDXP
##### Training Up Tomorrow's Sitecore MVPs: a Mentoring Success Story
How to participate in the Sitecore Mentor program and help younger colleagues jump-start a career in Sitecore development.
Sergey Baranov on October 2, 2023](https://www.brimit.com/blog/training-up-tomorrows-sitecore-mvps)

[!\[Going Headless. Part 2: When a Headless CMS Is Your Best Bet (if you have Sitecore)\](https://www.brimit.com/-/jssmedia/project/brimit/blog/2022/headless/adobestock_456986731.jpg)
#How-toDXPE-commerce
##### Going Headless. Part 2: When a Headless CMS Is Your Best Bet (if you have Sitecore)
Discover how a headless CMS can benefit organizations that use Sitecore.
Daniil Raschupkin, Palina Trokhautsava on September 15, 2022](https://www.brimit.com/blog/going-headless-part-2-when-a-headless-cms-is-your-best-bet-if-you-have-sitecore)

![](https://bat.bing.net/action/0?ti=187017043&amp;tm=gtm002&amp;Ver=2&amp;mid=2ea1b158-96e1-43ce-b431-c656dcd068aa&amp;bo=2&amp;gtm_tag_source=1&amp;pi=0&amp;lg=en-US&amp;sw=800&amp;sh=600&amp;sc=24&amp;nwd=1&amp;tl=Sitecore%20Commerce%209%3A%20MinionDelayPolicy&amp;kw=order,%20processing,%20delay,%20policy,%20Sitecore,%20Commerce,%20MinionDelayPolicy&amp;p=https%3A%2F%2Fwww.brimit.com%2Fblog%2Fsitecore-commerce-9-delay-miniondelaypolicy&amp;r=&amp;lt=296&amp;evt=pageLoad&amp;sv=2&amp;asc=D&amp;cdb=AQAY&amp;rn=852579)