---
title: "Custom event with custom data that maps with transformation"
slug: "custom-event-with-custom-data-that-maps-with-transformation"
abstract: "How to use xDB Migration Tool to map a custom event with custom data where the data is being transformed."
---
# Custom event with custom data that maps with transformation

This is similar to the section [Custom event with custom data that maps without transformation](https://doc.sitecore.com/xp/en/developers/dmt/30/xdb-data-migration-tool/custom-event-with-custom-data-that-maps-with-transformation.html "Custom event with custom data that maps with transformation"), but with the difference that the data from the Sitecore 8.x page event cannot be mapped to the Sitecore 9 custom event without the data being transformed.

Consider an example where, in Sitecore 8.x, you captured a page event when the visitor views a page that displays the status of his membership in a customer loyalty program.

In MongoDB, the page event looks like the following:

```csharp
{
    "Name" : "Loyalty program status checked",
    "ItemId" : NUUID("4257b6b4-e263-4356-bba1-9affce442a77"),
    "Timestamp" : NumberLong(0),
    "Data" : "{ \"currentLevel\" : \"silver\", \"pointsToNextLevel\" : \"10000\" }",
    "Text" : "Loyalty program status level for member 100011 is silver",
    "PageEventDefinitionId" : NUUID("5963f929-f278-4784-ba9d-be2fa5b86ae9"),
    "DateTime" : ISODate("2017-11-11T11:`00:00`.000Z"),
    "Value" : 5
}
```

In Sitecore 9, you created the following custom event to represent this data:

```csharp
using Sitecore.XConnect;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MigrationTool.Examples.Loyalty
{
    public class LoyaltyProgramStatusCheckedEvent3 : Event
    {
        public LoyaltyProgramStatusCheckedEvent3(Guid definitionId, DateTime timestamp) : base(definitionId, timestamp)
        {
        }

        public string StatusLevel { get; set; }

        public int PointsToNextLevel { get; set; }
    }
}
```

You want to implement the following mapping:

| Sitecore 8.x property | Sitecore 9 property |
| --- | --- |
| `Data` | `StatusLevel` and `PointsToNextLevel` |
| `DateTime` | `Timestamp` |
| `PageEventDefinitionId` | `DefinitionId` |
| `Text` | `Text` |
| `Value` | `EngagementValue` |