/// <summary>
            /// Invokes the Real-time service to get commerce lists from AX.
            /// </summary>
            /// <param name="request">The request.</param>
            /// <returns>Returns the response that contains the result.</returns>
            private static GetCommerceListRealtimeResponse GetCommerceLists(GetCommerceListRealtimeRequest request)
            {
                TransactionServiceClient transactionService = new TransactionServiceClient(request.RequestContext);
                var clists = transactionService.GetCommerceLists(request.Id, request.CustomerAccountNumber, request.FavoriteFilter, request.PublicFilter);

                return(new GetCommerceListRealtimeResponse(clists));
            }
            /// <summary>
            /// Gets the commerce lists specified by the request.
            /// </summary>
            /// <param name="request">The request.</param>
            /// <returns><see cref="GetCommerceListResponse"/>Object containing the commerce lists.</returns>
            protected override GetCommerceListResponse Process(GetCommerceListRequest request)
            {
                ThrowIf.Null(request, "request");
                ThrowIf.Null(request.RequestContext, "request.RequestContext");

                // Async customers do not have commerce lists.
                if (this.IsAsyncCustomer(request.RequestContext, request.CustomerAccountNumber))
                {
                    return(new GetCommerceListResponse(PagedResult <CommerceList> .Empty()));
                }

                // Employee can read any commerce lists.
                // Customer can only read lists owned by him or shared to him.
                // Anonymous is not allowed to read commerce lists.
                ICommercePrincipal principal = request.RequestContext.GetPrincipal();

                if (principal.IsAnonymous)
                {
                    throw new NotSupportedException("Anonymous is not allowed to read commerce lists.");
                }
                else if (principal.IsCustomer)
                {
                    request.CustomerAccountNumber = principal.UserId;
                }

                // Form a request and get the response
                GetCommerceListRealtimeRequest serviceRequest = new GetCommerceListRealtimeRequest
                {
                    Id = request.Id,
                    CustomerAccountNumber = request.CustomerAccountNumber,
                    FavoriteFilter        = request.FavoriteFilter,
                    PublicFilter          = request.PublicFilter,
                    QueryResultSettings   = request.QueryResultSettings
                };

                GetCommerceListRealtimeResponse serviceResponse = this.Context.Execute <GetCommerceListRealtimeResponse>(serviceRequest);

                return(new GetCommerceListResponse(serviceResponse.Clists));
            }