diff --git a/packages/modules/order/src/lib/components/order-view.component.ts b/packages/modules/order/src/lib/components/order-view.component.ts
index e8a3474e..8acaf6f1 100644
--- a/packages/modules/order/src/lib/components/order-view.component.ts
+++ b/packages/modules/order/src/lib/components/order-view.component.ts
@@ -1,8 +1,15 @@
-import { ChangeDetectionStrategy, Component } from '@angular/core';
+import {
+  ChangeDetectionStrategy,
+  Component,
+  OnDestroy,
+  OnInit,
+} from '@angular/core';
 import { Router } from '@angular/router';
 import { combineLatest } from 'rxjs';
 import { map, tap } from 'rxjs/operators';
 
+import { LayerRef, LayerService } from '@vcl/ng-vcl';
+
 import { ROUTER } from '@console-core/config';
 import {
   OrderFacade,
@@ -11,19 +18,21 @@ import {
   filterEmptyAndNullishAndUndefined,
 } from '@console-core/state';
 
+import { OrderItemFormComponent } from '../modals/order-item/order-item-form.component';
+
 @Component({
   selector: 'app-module-order-view',
   template: `
     <ng-container *ngIf="vm$ | async as vm">
       <rc-order-view
         [order]="vm.order"
-        [products]="vm.products"
+        (openAddItemModal)="onAddOrder()"
       />
     </ng-container>
   `,
   changeDetection: ChangeDetectionStrategy.OnPush,
 })
-export class OrderViewComponent {
+export class OrderViewComponent implements OnInit, OnDestroy {
   readonly vm$ = combineLatest({
     id: this.routerFacade.params$.pipe(
       map(({ id }) => id),
@@ -47,10 +56,36 @@ export class OrderViewComponent {
     products: this.productFacade.all$,
   });
 
+  addItemLayer!: LayerRef;
+
   constructor(
     private readonly router: Router,
     private readonly routerFacade: RouterFacade,
     private readonly productFacade: ProductFacade,
-    private readonly orderFacade: OrderFacade
+    private readonly orderFacade: OrderFacade,
+    private layerService: LayerService
   ) {}
+
+  ngOnInit(): void {
+    this.addItemLayer = this.layerService.create(OrderItemFormComponent, {
+      closeOnBackdropClick: false,
+      closeOnEscape: false,
+    });
+  }
+
+  ngOnDestroy() {
+    this.addItemLayer?.destroy();
+  }
+
+  onAddOrder() {
+    this.addItemLayer
+      .open({
+        data: {
+          products: [], //this.products,
+        },
+      })
+      .subscribe((result) => {
+        console.log('Result: ' + result?.value);
+      });
+  }
 }
diff --git a/packages/modules/ui/src/lib/components/molecules/order-items/order-item-form.component.html b/packages/modules/order/src/lib/modals/order-item/order-item-form.component.html
similarity index 88%
rename from packages/modules/ui/src/lib/components/molecules/order-items/order-item-form.component.html
rename to packages/modules/order/src/lib/modals/order-item/order-item-form.component.html
index 1a9fa0e4..ef5a4dc6 100644
--- a/packages/modules/ui/src/lib/components/molecules/order-items/order-item-form.component.html
+++ b/packages/modules/order/src/lib/modals/order-item/order-item-form.component.html
@@ -5,8 +5,9 @@
   <vcl-panel-title>Add item</vcl-panel-title>
 
   <form
+    vclForm
     [formGroup]="formGroup"
-    action=""
+    (submit)="onSubmit()"
   >
     <vcl-form-control-group>
       <vcl-label>Select a product</vcl-label>
@@ -89,5 +90,22 @@
         </vcl-input-field>
       </vcl-form-control-group>
     </div>
+
+    <div class="loose-button-group">
+      <button
+        vcl-button
+        type="submit"
+        [disabled]="this.formGroup.invalid"
+        class="emphasized"
+      >
+        Submit
+      </button>
+      <button
+        vcl-button
+        type="button"
+      >
+        Reset
+      </button>
+    </div>
   </form>
 </vcl-panel-dialog>
diff --git a/packages/modules/ui/src/lib/components/molecules/order-items/order-item-form.component.ts b/packages/modules/order/src/lib/modals/order-item/order-item-form.component.ts
similarity index 92%
rename from packages/modules/ui/src/lib/components/molecules/order-items/order-item-form.component.ts
rename to packages/modules/order/src/lib/modals/order-item/order-item-form.component.ts
index 69fe8c54..5f5e6b5e 100644
--- a/packages/modules/ui/src/lib/components/molecules/order-items/order-item-form.component.ts
+++ b/packages/modules/order/src/lib/modals/order-item/order-item-form.component.ts
@@ -13,11 +13,11 @@ import { IoRestorecommerceProductPhysicalVariant } from '@console-core/graphql';
 import { IProduct } from '@console-core/types';
 
 @Component({
-  selector: 'rc-order-item-form',
+  selector: 'app-order-item-form',
   templateUrl: './order-item-form.component.html',
   changeDetection: ChangeDetectionStrategy.OnPush,
 })
-export class RcOrderItemFormComponent implements OnInit, OnDestroy {
+export class OrderItemFormComponent implements OnInit, OnDestroy {
   private readonly subscriptions = new SubSink();
   variants: IoRestorecommerceProductPhysicalVariant[] = [];
 
@@ -75,12 +75,10 @@ export class RcOrderItemFormComponent implements OnInit, OnDestroy {
     return this.layer.data.products;
   }
 
-  onAction(_: string): void {
-    // TODO
-  }
-
   onSubmit(): void {
-    // TODO
+    if (this.formGroup.valid) {
+      console.log(this.formGroup.value);
+    }
   }
 
   close(value?: string) {
diff --git a/packages/modules/order/src/lib/modules-order.module.ts b/packages/modules/order/src/lib/modules-order.module.ts
index 4b07bd76..0a176114 100644
--- a/packages/modules/order/src/lib/modules-order.module.ts
+++ b/packages/modules/order/src/lib/modules-order.module.ts
@@ -9,6 +9,7 @@ import { OrderIndexComponent } from './components/order-index.component';
 import { OrderViewComponent } from './components/order-view.component';
 import { OrderTemplateComponent } from './components/template/order-template.component';
 import { modulesOrderRoutes } from './lib.routes';
+import { OrderItemFormComponent } from './modals/order-item/order-item-form.component';
 
 @NgModule({
   declarations: [
@@ -17,6 +18,7 @@ import { modulesOrderRoutes } from './lib.routes';
     OrderCreateComponent,
     OrderEditComponent,
     OrderViewComponent,
+    OrderItemFormComponent,
   ],
   imports: [
     ModulesUiModule.forChild(),
diff --git a/packages/modules/ui/src/lib/components/molecules/index.ts b/packages/modules/ui/src/lib/components/molecules/index.ts
index 7060b274..15dc90fa 100644
--- a/packages/modules/ui/src/lib/components/molecules/index.ts
+++ b/packages/modules/ui/src/lib/components/molecules/index.ts
@@ -6,5 +6,4 @@ export * from './product-variants/product-variant.component';
 export * from './product-variants/product-variants.component';
 export * from './product-variants/product-images.component';
 export * from './order-address/order-address.component';
-export * from './order-items/order-item-form.component';
 export * from './shop-info/shop-info.component';
diff --git a/packages/modules/ui/src/lib/components/molecules/order-items/order-item.schema.ts b/packages/modules/ui/src/lib/components/molecules/order-items/order-item.schema.ts
deleted file mode 100644
index 6ace3ee5..00000000
--- a/packages/modules/ui/src/lib/components/molecules/order-items/order-item.schema.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import { Validators } from '@angular/forms';
-
-import { conditional, VCLFormFieldSchemaRoot } from '@vcl/ng-vcl';
-
-import { IProduct } from '@console-core/types';
-
-interface ISchemaOptions {
-  products: IProduct[];
-}
-
-export const buildOrderItemSchema = (
-  options: ISchemaOptions
-): VCLFormFieldSchemaRoot => {
-  return {
-    type: 'form',
-    fields: [
-      {
-        name: 'productId',
-        label: 'Items',
-        type: 'select',
-        validators: [Validators.required],
-        params: {
-          placeholder: 'Select an item',
-          search: true,
-          options: options.products.map((product) => ({
-            value: product.id,
-            label: product.product.name,
-          })),
-        },
-      },
-      {
-        name: 'variantId',
-        label: 'Item variants',
-        type: 'select',
-        validators: [Validators.required],
-        params: {
-          placeholder: 'Select a variant',
-          // search: true,
-          options: (() => {
-            const x = conditional(['productId'], (enabled) => !!enabled.value);
-            console.log('xxx', x);
-            return [{ value: 'ex', label: 'ddd' }];
-          })(),
-        },
-        visible: conditional(['productId'], (enabled) => !!enabled.value),
-      },
-      {
-        type: 'buttons',
-        buttons: [
-          {
-            type: 'button',
-            label: 'Cancel',
-            action: 'reset',
-            class: 'transparent',
-          },
-          {
-            type: 'submit',
-            label: 'Save',
-          },
-        ],
-      },
-    ],
-  };
-};
diff --git a/packages/modules/ui/src/lib/components/molecules/order-items/order-items.component.html b/packages/modules/ui/src/lib/components/molecules/order-items/order-items.component.html
index 37dc9a50..14e7cc29 100644
--- a/packages/modules/ui/src/lib/components/molecules/order-items/order-items.component.html
+++ b/packages/modules/ui/src/lib/components/molecules/order-items/order-items.component.html
@@ -5,7 +5,7 @@
       vcl-button
       square
       class="emphasized-transparent"
-      (click)="openAddOrderItemComponent()"
+      (click)="openAddItemModal.emit()"
       title="Add order item"
     >
       <vcl-icon
diff --git a/packages/modules/ui/src/lib/components/molecules/order-items/order-items.component.ts b/packages/modules/ui/src/lib/components/molecules/order-items/order-items.component.ts
index 0e241e1a..3de01541 100644
--- a/packages/modules/ui/src/lib/components/molecules/order-items/order-items.component.ts
+++ b/packages/modules/ui/src/lib/components/molecules/order-items/order-items.component.ts
@@ -1,54 +1,21 @@
 import {
   ChangeDetectionStrategy,
   Component,
+  EventEmitter,
   Input,
-  OnDestroy,
-  OnInit,
+  Output,
 } from '@angular/core';
 
-import { LayerRef, LayerService } from '@vcl/ng-vcl';
-
 import { IoRestorecommerceOrderItem } from '@console-core/graphql';
-import { IProduct } from '@console-core/types';
-
-import { RcOrderItemFormComponent } from './order-item-form.component';
 
 @Component({
   selector: 'rc-order-items',
   templateUrl: './order-items.component.html',
   changeDetection: ChangeDetectionStrategy.OnPush,
 })
-export class RcOrderItemsComponent implements OnInit, OnDestroy {
+export class RcOrderItemsComponent {
   @Input({ required: true })
   items: IoRestorecommerceOrderItem[] = [];
 
-  @Input({ required: true })
-  products: IProduct[] = [];
-
-  addItemLayer!: LayerRef;
-
-  constructor(private layerService: LayerService) {}
-
-  ngOnInit(): void {
-    this.addItemLayer = this.layerService.create(RcOrderItemFormComponent, {
-      closeOnBackdropClick: false,
-      closeOnEscape: false,
-    });
-  }
-
-  ngOnDestroy() {
-    this.addItemLayer?.destroy();
-  }
-
-  openAddOrderItemComponent() {
-    this.addItemLayer
-      .open({
-        data: {
-          products: this.products,
-        },
-      })
-      .subscribe((result) => {
-        console.log('Result: ' + result?.value);
-      });
-  }
+  @Output() openAddItemModal = new EventEmitter<void>();
 }
diff --git a/packages/modules/ui/src/lib/components/organisms/order/order-view.component.html b/packages/modules/ui/src/lib/components/organisms/order/order-view.component.html
index 18f2226f..88d5199c 100644
--- a/packages/modules/ui/src/lib/components/organisms/order/order-view.component.html
+++ b/packages/modules/ui/src/lib/components/organisms/order/order-view.component.html
@@ -9,8 +9,8 @@
 
   <div class="order-items">
     <rc-order-items
-      [products]="products"
       [items]="order.items || []"
+      (openAddItemModal)="openAddItemModal.emit()"
     />
   </div>
 
diff --git a/packages/modules/ui/src/lib/components/organisms/order/order-view.component.ts b/packages/modules/ui/src/lib/components/organisms/order/order-view.component.ts
index 8fa051ef..099472c3 100644
--- a/packages/modules/ui/src/lib/components/organisms/order/order-view.component.ts
+++ b/packages/modules/ui/src/lib/components/organisms/order/order-view.component.ts
@@ -1,15 +1,17 @@
 import {
   ChangeDetectionStrategy,
   Component,
+  EventEmitter,
   Input,
   OnInit,
+  Output,
 } from '@angular/core';
 
 import {
   IoRestorecommerceProductPhysicalVariant,
   IoRestorecommerceUserUser,
 } from '@console-core/graphql';
-import { IOrder, IProduct } from '@console-core/types';
+import { IOrder } from '@console-core/types';
 
 @Component({
   selector: 'rc-order-view',
@@ -18,7 +20,8 @@ import { IOrder, IProduct } from '@console-core/types';
 })
 export class RcOrderViewComponent implements OnInit {
   @Input({ required: true }) order!: IOrder;
-  @Input({ required: true }) products!: IProduct[];
+
+  @Output() openAddItemModal = new EventEmitter<void>();
 
   product?: IoRestorecommerceProductPhysicalVariant | null;
   customer?: IoRestorecommerceUserUser | null;
diff --git a/packages/modules/ui/src/lib/modules-ui.module.ts b/packages/modules/ui/src/lib/modules-ui.module.ts
index 0f5968b3..c8f4e69b 100644
--- a/packages/modules/ui/src/lib/modules-ui.module.ts
+++ b/packages/modules/ui/src/lib/modules-ui.module.ts
@@ -49,7 +49,6 @@ import {
   RcProductVariantComponent,
   RcProductVariantsComponent,
   RcProductImagesComponent,
-  RcOrderItemFormComponent,
 } from './components/molecules';
 import {
   RcAppComponent,
@@ -167,7 +166,6 @@ const molecules = [
   RcProductVariantComponent,
   RcProductVariantsComponent,
   RcProductImagesComponent,
-  RcOrderItemFormComponent,
 ];
 
 const organisms = [
diff --git a/packages/modules/ui/tsconfig.lib.json b/packages/modules/ui/tsconfig.lib.json
index 9b49be75..309cb6fb 100644
--- a/packages/modules/ui/tsconfig.lib.json
+++ b/packages/modules/ui/tsconfig.lib.json
@@ -13,5 +13,8 @@
     "jest.config.ts",
     "src/**/*.test.ts"
   ],
-  "include": ["src/**/*.ts"]
+  "include": [
+    "src/**/*.ts",
+    "../order/src/lib/modals/order-item/order-item-form.component.ts"
+  ]
 }