# Problem with mapping in scheduled task

**URL:** <https://forum.litium.com/t/problem-with-mapping-in-scheduled-task/837>\
**Category:** Questions\
**Created:** [May 7, 2019, 12:09pm UTC](https://forum.litium.com/t/problem-with-mapping-in-scheduled-task/837 "2019-05-07T12:09:26Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![jonas.olsson](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.litium.com/jonas.olsson/32/177_2.png) [@jonas.olsson](https://forum.litium.com/u/jonas.olsson)\
**Post date:** [May 7, 2019, 12:09pm UTC](https://forum.litium.com/t/problem-with-mapping-in-scheduled-task/837/1 "2019-05-07T12:09:26Z")

</div>

We have a problem with mapping a Page to PageModel in scheduled task. Query returns results but pageModel is null after mapping.

```
var page = query.FirstOrDefault();
if(page != null){
	var pageModel = page.MapTo<PageModel>();
}

```

(We had a similar problem in [Problem with mapping after API request](https://forum.litium.com/t/problem-with-mapping-after-api-request/819) and since that was an API call we solved it with a change in RequestModelHandler, but we can’t use that solution here since this is not an API call?)

Any ideas?

Litium version: 7.1.0

---

<div class="post-metadata">

**Author:** ![patric.forsgard](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.litium.com/patric.forsgard/32/10_2.png) [@patric.forsgard](https://forum.litium.com/u/patric.forsgard)\
**Post date:** [May 7, 2019, 12:46pm UTC](https://forum.litium.com/t/problem-with-mapping-in-scheduled-task/837/2 "2019-05-07T12:46:19Z")

</div>

The mapping for the `PageModel` is using the information from `RouteRequestLookupInfo` to see if the page is published for the specified channel. If the the page not is published it will return `null`, the same if the `RouteRequestLookupInfo` not is set in the `RouteRequestLookupInfoAccessor`. (same problem as you have in the linked thread.

---

<div class="post-metadata">

**Author:** ![jonas.olsson](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.litium.com/jonas.olsson/32/177_2.png) [@jonas.olsson](https://forum.litium.com/u/jonas.olsson)\
**Post date:** [May 7, 2019, 1:00pm UTC](https://forum.litium.com/t/problem-with-mapping-in-scheduled-task/837/3 "2019-05-07T13:00:47Z")

</div>

FYI, the way we solved it before was a change in `RequestModelHandler.cs`, if it is an external API request and `siteSettingViewModel` is null then we create a new `siteSettingViewModel` with a specific value for channel:

```
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
    var siteSettingViewModel = request.Headers.GetSiteSettingViewModel();
    if (siteSettingViewModel == null && IsApiRequest(request.RequestUri.ToString()))
    {
        siteSettingViewModel = new SiteSettingViewModel
        {
            ChannelSystemId = new Guid("9c0600d9-1c04-4a06-a2ce-ecaa58d8be50")
        };
    }
    ...
}

```

But I still don’t understand how we should fix it in this case. How do we set a channel for a scheduled task? Should we modify `RouteRequestLookupInfo` somehow?

---

<div class="post-metadata">

**Author:** ![patric.forsgard](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.litium.com/patric.forsgard/32/10_2.png) [@patric.forsgard](https://forum.litium.com/u/patric.forsgard)\
**Post date:** [May 7, 2019, 1:19pm UTC](https://forum.litium.com/t/problem-with-mapping-in-scheduled-task/837/4 "2019-05-07T13:19:10Z")

</div>

In general you should inject `RouteRequestLookupInfoAccessor` and then do something like  
`_routeRequestLookupInfoAccessor.RouteRequestLookupInfo = new RouteRequestLookupInfo{ Channel = channelToWorkOn };`. It can also be other settings that you need to set to make it work all the way.

---

<div class="post-metadata">

**Author:** ![ton.nguyen](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.litium.com/ton.nguyen/32/989_2.png) [@ton.nguyen](https://forum.litium.com/u/ton.nguyen)\
**Post date:** [May 8, 2019, 1:14pm UTC](https://forum.litium.com/t/problem-with-mapping-in-scheduled-task/837/5 "2019-05-08T13:14:27Z")

</div>

What does your schedule task do? Why do you need a PageModel? RouteRequest and Channel are taken into account when mapping PageModel to Page. Can you try new PageModel(page)?

---

<div class="post-metadata">

**Author:** ![jonas.olsson](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.litium.com/jonas.olsson/32/177_2.png) [@jonas.olsson](https://forum.litium.com/u/jonas.olsson)\
**Post date:** [May 9, 2019, 5:36am UTC](https://forum.litium.com/t/problem-with-mapping-in-scheduled-task/837/6 "2019-05-09T05:36:10Z")

</div>

Thanks! The suggestion from @patric.forsgard solved our problem. We do like this.

```
public class MyTask : ITask
{
    private readonly RouteRequestLookupInfoAccessor _routeRequestLookupInfoAccessor;
    private readonly ChannelService _channelService;

    public MyTask(RouteRequestLookupInfoAccessor routeRequestLookupInfoAccessor, ChannelService channelService)
    {
        _routeRequestLookupInfoAccessor = routeRequestLookupInfoAccessor;
        _channelService = channelService;
    }

    public void ExecuteTask(SecurityToken token, string parameters)
    {
        var channel = _channelService.Get(new Guid("9c0600d9-1c04-4a06-a2ce-ecaa58d8be50"));
        _routeRequestLookupInfoAccessor.RouteRequestLookupInfo = new RouteRequestLookupInfo { Channel = channel };
        ...
    }
}
```
