public override async Task <EntityView> Run(EntityView entityView, CommercePipelineExecutionContext context) { Condition.Requires(entityView).IsNotNull(string.Format("{0}: The argument cannot be null.", Name)); var request = context.CommerceContext.GetObject <EntityViewArgument>(); if (string.IsNullOrEmpty(request != null ? request.ViewName : null) || !request.ViewName.Equals(context.GetPolicy <KnownPaymentsViewsPolicy>().OrderPayments, StringComparison.OrdinalIgnoreCase) && !request.ViewName.Equals(context.GetPolicy <KnownOrderViewsPolicy>().Master, StringComparison.OrdinalIgnoreCase) && !request.ViewName.Equals(context.GetPolicy <KnownPaymentsViewsPolicy>().OrderPaymentDetails, StringComparison.OrdinalIgnoreCase) || (!(request.Entity is Order) || !string.IsNullOrEmpty(request.ForAction))) { return(entityView); } Order order = (Order)request.Entity; if (!order.HasComponent <PaymentComponent>()) { return(entityView); } List <PaymentComponent> payments; if (order.HasComponent <OnHoldOrderComponent>()) { payments = (await _getOnHoldOrderCartCommand.Process(context.CommerceContext, order)).Components.OfType <PaymentComponent>().ToList(); } else { payments = order.Components.OfType <PaymentComponent>().ToList(); } HeidelpayPaymentComponent heidelpayComponent = null; if (request.ViewName.Equals(context.GetPolicy <KnownOrderViewsPolicy>().Master, StringComparison.OrdinalIgnoreCase) || request.ViewName.Equals(context.GetPolicy <KnownPaymentsViewsPolicy>().OrderPayments, StringComparison.OrdinalIgnoreCase)) { EntityView childPaymentView = entityView; if (request.ViewName.Equals(context.GetPolicy <KnownOrderViewsPolicy>().Master, StringComparison.OrdinalIgnoreCase)) { childPaymentView = entityView.ChildViews.Cast <EntityView>().FirstOrDefault( ev => ev.Name.Equals(context.GetPolicy <KnownPaymentsViewsPolicy>().OrderPayments, StringComparison.OrdinalIgnoreCase)); } if (childPaymentView != null) { childPaymentView.ChildViews .Where(cv => cv.Name.Equals(context.GetPolicy <KnownPaymentsViewsPolicy>().OrderPaymentDetails, StringComparison.OrdinalIgnoreCase)) .Cast <EntityView>().ToList().ForEach(paymentView => { heidelpayComponent = payments.FirstOrDefault(s => s.Id.Equals(paymentView.ItemId, StringComparison.OrdinalIgnoreCase)) as HeidelpayPaymentComponent; if (heidelpayComponent != null) { PopulatePaymentDetails(paymentView, heidelpayComponent); } }); } return(entityView); } heidelpayComponent = payments.FirstOrDefault(s => s.Id.Equals(request.ItemId, StringComparison.OrdinalIgnoreCase)) as HeidelpayPaymentComponent; if (heidelpayComponent != null) { PopulatePaymentDetails(entityView, heidelpayComponent); } return(entityView); }