The Den Store

About Solution

The Den Store is an e-commerce platform for the cannabis industry, based on NAV 2017 and LS Retail. It was designed and developed in collaboration with Tenging and 365Cannabis. The platform’s important feature is a built-in CMS and dynamic assembly of the frontend, which allows the platform to use the same codebase for multiple clients with different configurations.

https://demo.thedenstore.com

My involvement in the project

  • Solution architecture design.
  • Azure VM/IIS installation and configuration.
  • Codeunit С/AL code review.
  • API design and implementation.
  • Design and development of .NET Core NAV middleware.
  • CSS/HTML template layout.
  • Frontend development using Quasar Framework.
  • Git source code management.
  • Customer support, features implementation, versioning.

Key characteristics of the platform

  • Direct interaction with NAV via .NET Core NAV middleware.
  • Design and content management from NAV setup page.
  • Display a list of products depending on the selected state and store.
  • View inventory levels in real-time.
  • Dynamic product filters configurable from NAV.
  • Instant products search/filtering mechanism on fronted side.
  • Dynamic price calculation based on product quantity.
  • NAV managed offers and loyalty points functionality.
  • Customer order history and repeat order functionality.
  • Responsive User Interface and Kiosk-mode
  • E-mail and SMS notification
  • High-performance SPA based on Quasar Framework.

Implementation examples

Verilife

Grow West MD

The Prime Leaf

SweetDirt

D-Luxe Dispensar

Patient management portal

Ongoing project of The Den Store implementation for medical cannabis patient management in the Canadian market.

https://hub.thedenstore.com

Tokyo Sushi

About company

Tokyo Sushi is a chain of restaurants located in Iceland. The company manages 17 different locations and employs over 100 people. The back office runs on NAV 2017 and LS Retail.

In collaboration with Tenging, I designed and developed a set of solutions to optimize Tokyo Sushi’s business processes.

Tokyo Sushi e-commerce website

One of the solutions we developed was tokyo.is, an e-commerce website that allows users to order sushi from various locations around Iceland.

www.tokyo.is

The key features of tokyo.is

  • Direct interaction with NAV via .NET Core NAV middleware.
  • Valitor payment integration.
  • Apple pay and Google pay integration.
  • E-mail and SMS notification.
  • English/Icelandic language switch on the fly.
  • Cross/Upselling products.
  • Offers, Coupons, Discount, Mix & Match.
  • Configurable store hours and pickup intervals.
  • Setup Items/categories/groups from NAV.
  • Manage ingredients and nutrition.
  • Responsive User Interface and Kiosk-mode.
  • QR Code for table menu.
  • Customer order history and repeat order functionality.
  • High-performance SPA based on Quasar Framework.

Tokyo Sushi Mobile Application

Mobile version Tokyo Sushi e-commerce website using Quasar Framework for building web/mobile/desktop application.

Tokyo sushi in Google Play.

Tokyo sushi in Apple Store.

Tokyo Sushi self-service kiosk

A self-serve kiosk is an interactive touchscreen device that allows customers to purchase products and services without the assistance of a staff member. It incorporates a range of hardware and software components that enable customers to browse available items, place orders, and pay independently, all with just a few taps on the screen. Self-service kiosks provide a seamless and streamlined customer experience, saving time and effort for both the customer and the business.

Tokyo Sushi self-service kiosks use:

Label printing station

The printing station is a part of a complex, cloud-based software solution designed to optimize Tokyo Sushi’s production processes. On one side, the station receives data from NAV via .NET Core NAV middleware, and on the other side, it receives data from an electronic scale via a COM port and websockets. After receiving the data, the station combines it, generates ZPL code, and sends it to a Zebra printer to print barcode labels. This solution allows the business to instantly change prices and add new products and ingredients to the line.

My involvement in Tokyo Sushi project

  • Deploy Virtual Machines for application and database layers.
  • NAV middle tiers installation and configuration.
  • MSSQL server installation, DB transferring, backup configuration.
  • Azure VM/IIS installation and web application setup.
  • Network setup, manage DNS records and SSL certificates.
  • Solution architecture design.
  • C/AL Codeunit development and deployment.
  • API design and implementation.
  • Design and development of .NET Core NAV middleware.
  • NAV data configuration: item descriptions, images, translations.
  • CSS/HTML template layout from Figma.
  • Frontend development using Quasar Framework.
  • Git source code management and solution deployment.
  • Customer support, features implementation, versioning.

My involvement in label printing project

  • Solution architecture design.
  • COM2Websokcet windows service development.
  • Design and layout ZPL labels.
  • C/AL Codeunit development and deployment.
  • API design and implementation.
  • Design and development of .NET Core NAV middleware.
  • User interface development using Quasar Framework.
  • Business trip to Iceland for debugging and implementation.

Presto Market

About Presto company

Presto Market is a chain of grocery stores located in Trinidad and Tobago, managed by SuperPharm company. The back office is powered by Microsoft Business Central and LS Retail. In collaboration with Tenging, I participated in the design and development of the Presto e-commerce solution, which utilizes technologies such as Business Central, Node.js BC365 middleware, AWS serverless, and the latest version of Quasar Framework.

The project is currently in the development phase, and a demo version is available at the following URL.

My involvement in the project

  • Solution architecture design.
  • AWS configuration and web application setup.
  • C/AL Codeunit review.
  • API design and implementation.
  • Design and development of Node.js BC365 middleware
  • CSS/HTML template layout from Figma.
  • Frontend development using Quasar Framework.
  • Git source code management and solution deployment.

FershFields Farm

About FershFields Farm company

Freshfields Farm is a small family-owned company that produces and sells farm products in the US. The company was founded in Orlando in 1973 and now has 30 employees who manage two locations. The back office runs on NAV 2017 and LS Retail.

In collaboration with Tenging, I designed and developed a set of solutions to optimize Freshfields Farm’s business processes.

Azure infrastructure

One of the projects for Freshfields was to migrate the current company infrastructure from physical servers to Microsoft Azure.

My involvement in Azure infrastructure project

  • Deploy Virtual Machines for application and database layers.
  • Installation and configuration Active Directory Domain Controller.
  • Setup organizational security polices, rights and permissions.
  • Installation and configuration MSSQL servers, database transferring, setup backup polices.
  • Setup IIS servers, domains names administration, issuing SSL certificates.
  • Installation and managing NAV Middle tiers version 2017 and LS Retail addons.
  • Virtual networks setup and administration.
  • Network interfaces security policies configuration.
  • Configuration backup polices for virtual machines and databases.

FershFields Farm self-service kiosk

A self-service kiosk is an innovative and interactive touchscreen device that allows customers to independently browse, select, and purchase products without requiring assistance from a staff member. The kiosk is equipped with both hardware and software components that enable users to easily navigate through product options, place orders, and make payments, all on their own. This technology offers a convenient and streamlined shopping experience for customers and can potentially reduce wait times and workload for employees.

My involvement in self-service kiosk project

  • Solution architecture design.
  • C/AL Codeunit review.
  • API design and implementation.
  • Design and development of .NET Core NAV middleware.
  • CSS/HTML template layout from Figma.
  • Frontend development using Quasar Framework.
  • Git source code management and solution deployment.

 

Poulsen Ehf.

About Poulsen company

Poulsen is a well-established Icelandic company that specializes in selling car parts and repairing vehicles. Founded in 1910 by Valdimar Poulsen, a Danish iron casting master, the company now operates with a team of 30 employees across 2 locations. The company relies on NAV 2017 and LS Retail for its back-office operations.

In collaboration with Tenging, I had the opportunity to design and develop solutions to optimize Poulsen’s business processes.

Poulsen e-commerce website

Poulsen.is is an e-commerce website which allows users to buy car parts and book car repair.

www.poulsen.is

The key features of poulsen.is

  • Direct interaction with NAV via Node.js BC365 middleware.
  • SMS notification.
  • English/Icelandic language switch on the fly.
  • Configurable store hours and pickup intervals.
  • Setup Items/categories/groups from NAV.
  • Customer order history and repeat order functionality.
  • Integration with car parts TecDoc API.
  • Integration with Digital Iceland API.
  • High-performance SPA based on Quasar Framework.

Appointment scheduling tool

An extension has been developed for Poulsen’s e-commerce website, which enables users to schedule their car repair appointments.

The key features of appointment tool

My involvement in the project

  • Solution architecture design.
  • AWS configuration and web application setup.
  • C/AL Codeunit review.
  • API design and implementation.
  • Design and development of Node.js BC365 middleware.
  • CSS/HTML template layout from Figma.
  • Frontend development using Quasar Framework.
  • Git source code management and solution deployment.
  • Customer support, features implementation, versioning.

Pioneer Landscape Centers

Abut Pioneer company

Pioneer is a landscaping service provider in Arizona and Colorado since 1968. With 34 retail locations, 20 quarry and production facilities, and over 200 trucks. The back office is running NAV 2008, NAV 2017, Business Central and LS Retail.

Together with Tenging I designed and developed a set of solutions to optimize Pioneer business process.

Pioneer e-commerce mobile app

E-Commerce app is a piece of software that allows Pioneer customers to browse and purchase items. Backend part of the application is based on Node.js BC365 Middleware and Business Central.

This architecture allows admins to customize mobile app directly from Business Central:

  • Store images and description, working hours.
  • Setup available pickup/delivery days.
  • Configuring hierarchy nodes.
  • Editing product descriptions and images.
  • Product max Pickup/Delivery quantity.

Frontend part is based on Quasar Framework and its ability to use the same code base for mobile/web/desktop application. Key features of mobile app:

  • Products hierarchy.
  • Real-time inventory level.
  • Popular Products.
  • Materials Calculator.
  • Homeowner or contractor accounts.
  • Account balance and credit.
  • Pickup and delivery Orders.
  • Order history and digital receipts.
  • E-mail and SMS notification.

My involvement in the Pioneer mobile app project

  • Solution architecture design.
  • AWS configuration and web application setup.
  • C/AL Codeunit analysis.
  • Constructing API.
  • Design and development Node.js BC365 middleware.
  • Integration with AWS infrastructure
  • CSS/HTML template layout from Figma.
  • Frontend development using Quasar Framework.

Pioneer Web POS

Web-based point of sale is the part of compex SaaS ecosystem developed for Pioneer. Web POS has user friendly interface and helps employees to get used to POS and build orders easily. Web POS is designed to operate with a single user license, which significantly reduces license costs for multi-user access. The backend part of the solution connected to NAV2009/2017 via .NET Core NAV middleware.

Key features of Pioneer Web POS

  • Creating and modifying a customer.
  • Build order by tare amount.
  • Create a customer quote.
  • Create a delivery order.
  • Creating a pickup order.
  • Cash, credit card, account balance, check payments types.

My involvement in the Pioneer Web POS project

Invicta Stores

About Invicta company

Invicta Stores is an official reseller of the Invicta Watch Company of America. Invicta Stores operates InvictaStores.com, and numerous physical retail locations across the United States, including the territory of Puerto Rico. To manage their back-office operations, Invicta Stores utilizes Microsoft Dynamics NAV for track inventory levels, manage purchase orders, and automate many aspects of their supply chain.

In collaboration with Tenging, I had the opportunity to design and develop solutions to optimize Invicta Stores business processes.

Invincible Guarantee

Invicta Stores has created an innovative program called the Invincible Guarantee. This program allows customers to trade in their Invicta watch for credit towards the purchase of a new watch. This program has been extremely popular with customers, as it allows them to upgrade their timepiece while also enjoying significant cost savings.

The Invincible Guarantee is managed through a dedicated web portal, which is integrated with the Dynamics NAV via BC365 Connector. Customers can use the portal to initiate a trade-in, and the system automatically generates a quote based on the condition of the watch. If the customer accepts the quote, they can then apply the credit towards the purchase of a new watch.

Official website of the program: https://invincibleguarantee.com

Invicta Loyalty

To provide customers with an enhanced shopping experience with Invicta Stores I have developed a mobile application that allows customers to access their loyalty accounts, collect more points, and avail exclusive offers and coupons.

The mobile application is designed to be user-friendly, with an intuitive interface that allows customers to navigate easily and quickly. With the app, customers can view their loyalty points balance, track their rewards, and redeem them for exclusive offers and coupons. T

he frontend part of the application was developed using Quasar Framework. The backend part of the application was developed using .NET Core NAV middleware.

My role in Invincible Guarantee and Invicta Loyalty projects

  • Azure VM/IIS installation and web application setup.
  • Network setup, manage DNS records and SSL certificates.
  • Solution architecture design.
  • C/AL Codeunit development and deployment.
  • API design and implementation.
  • Design and development of .NET Core NAV middleware.
  • CSS/HTML template layout from Figma.
  • Frontend development using Quasar Framework.
  • Git source code management and solution deployment.
  • Customer support, features implementation, versioning.

.NET Core NAV middleware

Transfer data between .NET Core and NAV

In this article, I will discuss different methods to transfer data between .NET Core and NAV in JSON format. We will also explore how to consume published NAV codeunit using .NET Core and build an external API to manage NAV data.

The implementation of .NET Core NAV middleware can vary based on the NAV version, authentication types, and data specifics. In this article, we will discuss three different ways of implementing the middleware.

.NET Core NAV middleware based on SOAP web services and WCF

This approach works for NAV2009-NAV2018 when codeunit is published as SOAP web service.

  1. The core of our .NET Core NAV middleware is the Codeunit, which exports the external function GetJSON. This function takes Request and Param as input parameters and returns ReturnJSON in JSON format. GetJSON is the central entry point, and depending on the Request, it distributes data to the internal functions of the Codeunit.
  2. For instance, an internal function, GetItems, returns a list of products in JSON format using the Newtonsoft.Json library as a .NET add-on.
  3. To make our Codeunit available to .NET Core, we publish it as a SOAP Web service with a specific URL.
  4. By opening this URL in a browser, we can see the WSDL metadata of the published GetJSON function.
  5. To connect the published Codeunit, we use Visual Studio tools and CoreWCF, which is a port of the service-side of Windows Communication Foundation (WCF).
  6. The WCF library generates all the necessary proxy classes automatically.
  7. Using the generated proxy classes, we create a ServiceRepository class, which manages the connection channel.
  8. In the ServiceRepository class, we create a wrapper over the GetJSON function to establish a connection between the NAV middle tier and the .NET Core NAV middleware.

.NET Core NAV middleware based on SOAP web services and System.Net.Http.HttpClient

To establish a more convenient and lightweight connection with NAV in certain scenarios, one can avoid using WCF. By employing basic authorization and maintaining the GetJSON function signature, the System.Net.Http.HttpClient library can be utilized for sending simple POST or GET requests in XML format. This approach can streamline the process and offer a simpler solution for certain use cases.

  1. To communicate with a published SOAP service, we can directly provide an XML envelope that adheres to specific rules. The JSON data from the <return_value> XML tag can be easily extracted from the request response body.
  2. To pass authorization in the SOAP service, we need to provide the login and password encoded in a base64 string as the Authorization header. Additionally, we should include the codeunit name and function name as the SOAPAction header.
  3. In Postman, we can enter the login and password for Basic Authorization in the Authorization tab.
  4. Using the .NET System.Net.Http.HttpClient library, we can create a POST request, pass the necessary headers, and the XML envelope in the body to retrieve data from the SOAP service.

.NET Core NAV middleware besed on OData V4 Unbound Action and System.Net.Http.HttpClient

From Microsoft Dynamics NAV 2018 and onwards, it is feasible to expose a function as a web service action using OData V4. This represents a more advanced and modern approach to interacting with NAV, surpassing the SOAP Web services method. OData V4 is widely adopted to connect to Business Central.

  1. In Visual Studio Code, we can create an entry point for the GetJSON function, utilizing the same approach mentioned earlier to distribute data between internal functions of the codeunit.
  2. As an example, we can create a Ping function that simply sends to the output whatever it receives as an input parameter.
  3. Codeunit is published as an OData V4 service.
  4. We can call codeunit function by URL /NAVMiddleTierName/ODataV4/CodeunitName_FunctionName. However, it’s important to include basic Authorization and Company in the request headers.
  5. By passing a JSON body to the POST request, we can receive a response from the Ping function.
  6. With the .NET System.Net.Http.HttpClient library, we can create a POST request and include the necessary headers and JSON data in the body.

Building API to manage NAV data with .NET Core.

With the three methods outlined above, we have successfully established a connection between .NET Core and the NAV codeunit. The next step is to create an API for frontend clients such as web and mobile applications, or other systems that require NAV integration.

To accomplish this, we can utilize the ASP.NET Core MVC framework to implement the API, user interfaces, data, and control logic.

  1. Here’s an example of an MVC controller that receives the Request parameter as a NAV method name, and a JSON string in the body. It passes this data to the GetJSON function.
  2. Frontend applications can leverage this controller by calling the GetItems method, which enables them to retrieve a list of items directly from NAV and draw them on the screen.

Extending .NET Core NAV middleware

In this article, we have explored several methods on how to use .NET Core to extract data from NAV in JSON format and transmit it to client applications. However, the concept of .NET Core NAV middleware goes beyond being a mere data transmitter. It serves several additional purposes, such as:

  1. Load balancing for a large number of requests
  2. Request caching in internal memory
  3. Intermediate storage of files and pictures
  4. Authentication and data protection
  5. Sending email or SMS notifications
  6. Integration with payment systems
  7. Logging and monitoring tools

These functionalities can be implemented as plug-ins and added to the middleware, based on the customer’s specific requirements. By leveraging the .NET Core NAV middleware, developers can create custom solutions that not only provide seamless integration with NAV but also offer additional features and functionalities to meet the client’s specific business needs.

Tenging verslunarlausnir ehf.

About Tenging

Tenging is a leading consulting compant that provides development and support to clients managing Microsoft Dynamics Business Central solutions for the retail and hospitality sectors in Europe and the USA. With a team of 40 skilled professionals who work remotely from 8 different countries. The company’s headquarters is based in Vilnius, Lithuania.

As an early employee at Tenging, I played a pivotal role in laying the foundation for the company’s growth. With my expertise in architectural solutions, I helped streamline operations and increase the company’s revenue by 20 times in just 5 years. This growth also led to a significant increase in the number of employees, expanding the team from just 2 to 40 talented individuals spread across the globe.

Working at Tenging has been an incredibly rewarding experience. Collaborating with a team of experts from diverse backgrounds has helped me expand my skillset and broaden my perspectives. I take pride in being part of an organization that is dedicated to providing top-notch services and delivering value to its customers.

Azure infrastructure

In my first project, I was responsible for developing and deploying the complete company infrastructure on Microsoft Azure. My primary duties and accomplishments during this project included:

  • Deploy Virtual Machines for application and database layers.
  • Installation and configuration Active Directory Domain Controller.
  • Setup organizational security polices, rights and permissions.
  • Installation and configuration MSSQL servers, database transferring, setup backup polices.
  • Setup IIS servers, domains names administration, issuing SSL certificates.
  • Installation and managing NAV Middle tiers versions from 2009 to Business Central.
  • Virtual networks setup and administration.
  • Network interfaces security policies configuration.
  • Configuration backup polices for virtual machines and databases.

Project management tool

My next challenge at Tenging was to develop a project management tool that would help streamline the daily work of our employees. I created a powerful tool that allows colleagues to easily create and assign tasks, add comments, attach files, and track their work hours.

The project management tool leverages NAV2013 as its backend and incorporates its project management business logic. When users log their hours, the record is automatically saved in the Time Sheet Line table in NAV, allowing for seamless financial optimization using the NAV Financial Management module.

To enhance the functionality of the tool, we integrated it with popular software such as Teams, Outlook, Sharepoint, and Azure AD. This allowed for better collaboration among team members and streamlined workflows.

The task management tool was built using .NET Core NAV middleware and the Quasar Framework, ensuring a robust and scalable solution that meets the needs of our growing business.

Mobile application for task management tool

For my next project, I was tasked with converting the Task Management System into a mobile application using the Quasar Framework. This framework enabled me to utilize the same codebase for building web, mobile, and desktop applications. Throughout this project, I acquired valuable experience in using Xcode and Android Studio to develop and debug mobile applications. Additionally, I became adept at submitting applications for review and successfully navigating the review process for both Google Play and App Store.

Unified API Monitoring Tool.

Tenging has implemented a Unified API Monitoring Tool that consolidates all the client solutions developed and published by the company. This powerful tool enables our support center to quickly identify and resolve communication issues in real-time, ensuring seamless and uninterrupted services for clients.

With the Unified API Monitoring Tool, our team can monitor all client systems and applications from a single dashboard. The tool offers a comprehensive range of features such as real-time alerts, performance tracking, and detailed analytics.