# Custom Module Issue in Extension on cart line item and order line Item Field

**URL:** <https://www.virtocommerce.org/t/custom-module-issue-in-extension-on-cart-line-item-and-order-line-item-field/472>\
**Category:** support\
**Created:** [July 6, 2022, 12:16pm UTC](https://www.virtocommerce.org/t/custom-module-issue-in-extension-on-cart-line-item-and-order-line-item-field/472 "2022-07-06T12:16:59Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Koshalgarg155](https://yyz2.discourse-cdn.com/flex032/user_avatar/www.virtocommerce.org/koshalgarg155/32/1053_2.png) [@Koshalgarg155](https://www.virtocommerce.org/u/Koshalgarg155)\
**Post date:** [July 6, 2022, 12:16pm UTC](https://www.virtocommerce.org/t/custom-module-issue-in-extension-on-cart-line-item-and-order-line-item-field/472/1 "2022-07-06T12:16:59Z")

</div>

Hi  
I have created custom module to extend the line item in order line item and created 2nd custom module to extend the line Item in cart now i am able to save that field value of cart line item in database but when i am placing order createOrderFromCart api gets called its not converting my new field of cart lineitem to order lineItem i have override toOrderModel also and with container i have register in module.cs

This is the code which i am using to override ToOrderModel

public class NBCustomerOrderBuilder : CustomerOrderBuilder  
{  
private readonly ICustomerOrderService \_customerOrderService;

```
    public NBCustomerOrderBuilder(ICustomerOrderService customerOrderService) : base(customerOrderService)
    {
        _customerOrderService = customerOrderService;
    }

    protected override LineItem ToOrderModel(VirtoCommerce.CartModule.Core.Model.LineItem lineItem)
    {
        var result = base.ToOrderModel(lineItem) as NBCustomerOrderLineItem;

        var cartLineItem2 = lineItem as NB.CartModule.Core.Models.NBCartLineItem;
        if (cartLineItem2 != null)
        {
            result.PrescriptionId = cartLineItem2.PrescriptionId;
        }
        return result;
    }
}

```

This is my module.cs where i have registered

public class Module : IModule  
{  
public ManifestModuleInfo ModuleInfo { get; set; }  
private readonly IUnityContainer \_container;  
public Module()  
{  
\_container = new UnityContainer();  
}

```
    public void Initialize(IServiceCollection serviceCollection)
    {
        // database initialization
        AbstractTypeFactory<OrderLineItem>.OverrideType<OrderLineItem, NBCustomerOrderLineItem>();
        
        AbstractTypeFactory<OrderLineItemEntity>.OverrideType<OrderLineItemEntity, NBCustomerOrderLineItemEntity>();

        var configuration = serviceCollection.BuildServiceProvider().GetRequiredService<IConfiguration>();
        var connectionString = configuration.GetConnectionString("VirtoCommerce.OrderModuleModule") ?? configuration.GetConnectionString("VirtoCommerce");
        serviceCollection.AddDbContext<NBOrderDbContext>(options => options.UseSqlServer(connectionString));
        serviceCollection.AddDbContext<NotesDbContext>(options => options.UseSqlServer(connectionString));
        serviceCollection.AddTransient<INotesService, NotesService>();
        _container.RegisterType<CustomerOrderBuilder, NBCustomerOrderBuilder>();
        serviceCollection.AddTransient<IOrderRepository, NBOrderRepository>();
        serviceCollection.AddTransient<INotesRepository, NotesRepository>();
        serviceCollection.AddTransient<Func<INotesRepository>>(provider =>
            () => provider.CreateScope().ServiceProvider.GetRequiredService<INotesRepository>());
    }

```

public void PostInitialize(IApplicationBuilder appBuilder)  
{  
// register settings  
var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService();  
settingsRegistrar.RegisterSettings(ModuleConstants.Settings.AllSettings, ModuleInfo.Id);

```
        // register permissions
        var permissionsProvider = appBuilder.ApplicationServices.GetRequiredService<IPermissionsRegistrar>();
        permissionsProvider.RegisterPermissions(ModuleConstants.Security.Permissions.AllPermissions.Select(x =>
            new Permission()
            {
                GroupName = "OrderModuleModule",
                ModuleId = ModuleInfo.Id,
                Name = x
            }).ToArray());

        // Ensure that any pending migrations are applied
        using var serviceScope = appBuilder.ApplicationServices.CreateScope(); 
        
            using (var dbContext = serviceScope.ServiceProvider.GetRequiredService<NBOrderDbContext>())
            {
                dbContext.Database.EnsureCreated();
                dbContext.Database.Migrate();
            }
            using (var dbContext = serviceScope.ServiceProvider.GetRequiredService<NotesDbContext>())
            {
                dbContext.Database.EnsureCreated();
                dbContext.Database.Migrate();
            }
        }

```

Do we need to override initialize method i have register in existing initialize in module.cs ?

---

<div class="post-metadata">

**Author:** ![Koshalgarg155](https://yyz2.discourse-cdn.com/flex032/user_avatar/www.virtocommerce.org/koshalgarg155/32/1053_2.png) [@Koshalgarg155](https://www.virtocommerce.org/u/Koshalgarg155)\
**Post date:** [July 7, 2022, 4:41am UTC](https://www.virtocommerce.org/t/custom-module-issue-in-extension-on-cart-line-item-and-order-line-item-field/472/2 "2022-07-07T04:41:05Z")

</div>

Hi  
This issue is solved actually i did register using container but it worked when i register using serviceCollection.AddTransient\<ICustomerOrderBuilder, NBCustomerOrderBuilder\>();

Thanks

---

<div class="post-metadata">

**Author:** ![OlegoO](https://yyz2.discourse-cdn.com/flex032/user_avatar/www.virtocommerce.org/olegoo/32/27_2.png) [@OlegoO](https://www.virtocommerce.org/u/OlegoO)\
**Post date:** [July 8, 2022, 6:23am UTC](https://www.virtocommerce.org/t/custom-module-issue-in-extension-on-cart-line-item-and-order-line-item-field/472/3 "2022-07-08T06:23:32Z")

</div>

Thank you for the feedback.
