Join us for the next Acumatica User Forum to learn how to modify and customize Financial Statements in Acumatica ERP.

For previous User Forum events covering and other Acumatica tips and tricks, go to our Acumatica Video Resource page. Be sure to like and subscribe to our Acumatica User Forum Playlist on YouTube.

We truly value our Acumatica customers. When you register for this event, you’ll also receive a Grubhub voucher as a token of our appreciation.

Register Here

 

Join us for the next Acumatica User Forum to learn how to set up and use the Taxes subledger of Acumatica ERP for maintaining sales and use taxes. The current version of the course is valid for Acumatica ERP 2022 R1.

For previous User Forum events covering and other Acumatica tips and tricks, go to our Acumatica Video Resource page. Be sure to like and subscribe to our Acumatica User Forum Playlist on YouTube.

We truly value our Acumatica customers. When you register for this event, you’ll also receive a Grubhub voucher as a token of our appreciation.

Register Here

 

If you have your own custom code extensions or common libraries that are generic enough for sharing across Acumatica modules, customization projects, or even instances; this solution is also a great option for reusing your own Acumatica custom extended libraries by creating NuGet packages for them.

Introduction

Seasoned developers are probably aware of the benefits of using a package manager tool for installation and updates of packaged reference files and libraries.  Such packages contain reusable code that are published to a central repository for consuming by other programs.  The advantages to using such a tool is to maintain any common code in a common location, rather than needing to copy the individual files around and maintain their versions separately and manually.  There are many public package managers available for different languages, frameworks, and platforms; such as the popular NuGet, npm, Bower, and yarn.  This article focuses on the usage of NuGet because it is the standard package manager for Microsoft.NET – the platform used for Acumatica and its customizations.

Since I began developing customizations in Acumatica five years ago, and also coming from a deep .NET and client/server full-stack background, I’ve always wanted the Acumatica common libraries to be available as a package and have wondered why such packages weren’t already readily available.  I have long wanted to fill this void myself in order to simplify the referencing of these libraries for our own custom code extension libraries.  I recently was able to set this up for our company, Aktion Associates (an Acumatica VAR and Gold Certified Partner), and I’d like to share with you how this can be accomplished.

What is NuGet?

Stepping back for a moment, NuGet is a .NET package manager that’s integrated with Visual Studio.NET – the Microsoft development environment integrated and recommended for use to author code extensions for Acumatica customizations.  NuGet is used to create and share reusable packages from a designated public or private host.  https://www.nuget.org/ is the main NuGet Gallery repository to which public packages can be published, and from which .NET projects can consume.  Popular packages such as Json.NET – a JSON parser and serializer – can be found here, as well as Microsoft.NET framework packages, and many others.  Instead of searching the web for an installation program or the specific download file you need for a third-party library, NuGet can be used to retrieve and install the appropriate package of files and the version required simply by selecting it from its public host.  NuGet can also be used for packages hosted privately for use internally for yourself or your company.  Since Acumatica libraries are not available publicly via nuget.org, this article explains setting up these common libraries as private packages for use in your own customization projects.

There are many more guidelines for using and configuring NuGet that can be found within its documentation found at https://docs.microsoft.com/en-us/nuget than what is described here.

Using NuGet with Acumatica

To reference a NuGet package in your own customization extended library’s Visual Studio project, open your project in Visual Studio, right-click on the project’s References node in the Solution Explorer, and select the Manage NuGet Packages context menu option.  This will open a window like the image in Figure 1, which displays NuGet packages already installed, and those available for install.  If you Browse for “Newtonsoft.Json”, for example, from nuget.org, it should display that package in the results.  When you select a package, you can then choose a specific version available from the specified package host and install it.  That package will then show under your project references and its files can be referenced within your extended code.  See Figure 2 for an example of referencing the Json.NET library in a C# Visual Studio project after installing it via NuGet.

Figure 1: NuGet Package Manager in Visual Studio

Figure 2: Referencing Json.NET after installing as a reference

The advantage to referencing libraries via NuGet like this is the simplicity, and allowing it to manage libraries and their versions without needing to do so manually.  To then install a newer version of the library, you open the NuGet Package Manager again in Visual Studio from Figure 1, change the version to another available version, and Update.  This is how I’d like Acumatica common library references to behave, and which is now possible with the solution outlined below.

Creating a NuGet Package

The first step is to create a NuGet package containing common Acumatica libraries.  These common libraries are the most often used when writing a code extension in an external library.  They include the following:

I also like to include PX.Data.BQL.Fluent.dll because I prefer using Fluent BQL syntax within code.

The Package Manifest

A NuGet package manifest is created by defining the contents in a .nuspec XML file.  The schema for a .nuspec file can be found within its documentation at https://docs.microsoft.com/en-us/nuget/reference/nuspec.  The following XML shows an example of the contents of a .nuspec file (e.g. Acumatica.nuspec) for the Acumatica libraries mentioned above.

(Acumatica.nuspec contents)

GISThttps://gist.github.com/tlanzer-aktion/e76f8bc275cc3415344a1183666e59b5

Within this XML, the package is supplied a name (<id>) and a version (<version>), the files to reference in the destination Visual Studio project (<references>), and the source files to include in the package (<files>).  Notice in this example that I’m naming the package Acumatica.PX.Main, and I’m including Acumatica build version 22.100.178 of its libraries.

Creating the Package

The next step is to create the package from the .nuspec package manifest.  You can download nuget.exe from https://www.nuget.org/downloads, which is a command-line program used to create a NuGet package from a NuGet manifest.  On the command line, the syntax to create the example package using nuget.exe is:

nuget pack Acumatica.nuspec -NoPackageAnalysis

This syntax assumes that both nuget.exe and Acumatica.nuspec is accessible within the current path, so if not, the path for one or both should be specified.  The resulting package created from the example should be Acumatica.PX.Main.22.100.178.nupkg.

Additional Package Versions

Now that we have one build version of Acumatica’s common libraries packaged, you can continue creating additional versions as needed or as they are released by Acumatica.  To create a new package for the following build version – 22.101.85 – you can repeat the instructions above but replace the version number and include that version of the libraries.  You should then end up with a new package named Acumatica.PX.Main.22.101.85.nupkg, and so on.

Setting Up a NuGet Feed

To make a package available for project reference, it needs to be published to a NuGet feed.  Since the package is meant for your own consumption, you’ll want to create a private feed for yourself or your organization.  A private feed can be a local file share or server, or a remote private hosting service like Azure Artifacts or GitHub Package Registry.  At Aktion Associates we use Azure DevOps as our source control repository, so we use Azure Artifacts as our feed host, and this will also be used for examples in this article.

Creating the Feed

To create a NuGet Feed in Azure Artifacts, open the Azure DevOps project in which you want to create a feed and choose Create Feed on the main Artifacts page.  The dialog shown in Figure 3 should open.  After naming and configuring the feed according to the visibility and scope of your needs, create the feed.

Figure 3: Create New Feed dialog

Publishing to the Feed

Now that you have both a NuGet package and a NuGet feed set up, you can publish the package to the feed.  On the main Azure Artifacts page, choose Connect to Feed, then select NuGet.exe as the connection type, and copy the new feed URL shown.  Then, on the command line, the syntax to publish the example package using nuget.exe is:

nuget push -Source <feed url> -ApiKey <any string> Acumatica.PX.Main.22.100.178.nupkg

This syntax assumes that both nuget.exe and Acumatica.PX.Main.22.100.178.nupkg is accessible within the current path, so if not, the path for one or both should be specified.  The specified package should now be published to the feed and be accessible for referencing according to the configuration of your feed.  Figure 4 shows an example private feed and package inside Azure Artifacts after creation and publishing.

Figure 4: Feed created in Azure Artifacts

Using Your NuGet Feed

After publishing your packages to your NuGet feed, you should be able to then reference the package and version from your feed inside your Visual Studio project as described in Using NuGet with Acumatica.  In the NuGet Package Manager, add your new package source (i.e. the NuGet feed you created) from the Options dialog opened from the gear icon next to the Package source dropdown.  After adding the feed, the published package should display in the list of available packages.  Select the package in the list, and then the different published versions should be available in the Version dropdown to choose for installation or update.  See Figure 5 for an example of what the Package Manager shows after selecting the package (e.g. Acumatica.PX.Main) in your new NuGet feed.

Figure 5: Selecting a NuGet package and version

Once you choose a package and appropriate version, installing or updating it creates reference to that package’s library versions in your Visual Studio project.  See Figure 6 for an example of a C# Visual Studio project after installing the Acumatica.PX.Main NuGet package from a NuGet feed.

Figure 6: Visual Studio project after package installation

Other Acumatica Libraries

You can take this solution further and create additional NuGet packages for other commonly used Acumatica libraries like PX.ApiPX.CachingPX.Web, etc. and repeat the steps mentioned above for these.  Once those packages are created and published to your feed, you will also be able to reference these in the same manner.

Your Own Packages

If you have your own custom code extensions or common libraries that are generic enough for sharing across Acumatica modules, customization projects, or even instances; this solution is also a great option for reusing your own Acumatica custom extended libraries by creating NuGet packages for them.  For example, Aktion has our own API custom library which adapts the existing Acumatica API to our own best practices for integration and communication, and we share it across projects via our own private feed.

Summary

I hope you find this solution for setting up a NuGet feed for Acumatica library packages useful, and I’d love to hear from you and how you’ve put it into use or adapted it for your own needs.  It does require a bit of maintenance to keep package versions updated in your feed, but the efficiency gained by easily referencing and consuming an appropriate library version for your customizations and upgrade needs is substantial and valuable.

Happy Coding!

Join us for the next Acumatica User Forum event exploring how to better use CRM within Acumatica. Acumatica CRM provides a consolidated view of all customer records in a single database, so every member of your team has a 360-degree view of all customer activities and records, and management has real-time insight into performance.

For previous User Forum events covering and other Acumatica tips and tricks, go to our Acumatica Video Resource page. Be sure to like and subscribe to our Acumatica User Forum Playlist on YouTube.

We truly value our Acumatica customers. When you register for this event, you’ll also receive a Grubhub voucher as a token of our appreciation.

Register Here

 

Join us for an upcoming Acumatica User Forum event focused on the customizations and their packaging, publishing and storage within Acumatica. For those who attend this event, Aktion will also be offering a valuable document titled “Customizing, Packaging, and Publishing: Best Practices for Acumatica.”

For previous User Forum events covering and other Acumatica tips and tricks, go to our Acumatica Video Resource page. Be sure to also like and subscribe to our Acumatica User Forum Playlist on YouTube.

Register Here

 

Join us for the next Acumatica User Forum event covering using the Report Designer in Acumatica. The Report Designer lets users design new reports and customize predefined reports to fit their specific needs.

For previous User Forum events covering and other Acumatica tips and tricks, go to our Acumatica Video Resource page. Be sure to also like and subscribe to our Acumatica User Forum Playlist on YouTube.

We truly value our Acumatica customers. When you register for this event, you’ll also receive a Grubhub voucher as a token of our appreciation.

Register Here

 

Join us for the next Acumatica User Forum event all about using Acumatica’s powerful and interactive dashboards. The dashboards offer flexibility and can be tailored to the specific needs of each user. Join us to learn how to more effectively use them. When you attend, you’ll also receive a Grubhub voucher to thank you for being an Aktion customer.

For previous User Forum events covering and other Acumatica tips and tricks, go to our Acumatica Video Resource page. Be sure to also subscribe to our Acumatica User Forum Playlist on YouTube.

We truly value our Acumatica customers. When you register for this event, you’ll also receive a Grubhub voucher as a token of our appreciation.

Register Here

 

Increase Total Revenue and Digital Engagement While Reducing Your Costs

As a manufacturer, especially if you’ve been in business for decades, manufacturing and eCommerce may not be words that go together. Indeed, eCommerce may not be on your radar. Or, if it is, it’s a small blip that is disregarded in face of other, more pressing matters, like getting your products into the hands of your customers through your tried-and-true distributor, wholesaler, and retail channels.

This isn’t to say you haven’t entered the digital realm. Your website is an informational (e.g., this is who we are, and this is what we do) but not functional (e.g., used as a selling portal) part of your business. However, suggestions of taking the website further, such as using it to sell directly to customers (DTC), begs the question, “Why fix that which isn’t broken, especially with an impersonal online selling portal?”

While a fair question, the digital economy and the COVID-19 crisis have sparked major changes in the marketplace. Manufacturers that don’t evolve with these changes may be left behind, especially as competitors offering an eCommerce option are already seeing the benefits, including an increase in their revenue, efficiency, and digital engagement (of which they had very little beforehand), as well as a reduction in their overall operational costs.

The Importance of Your Digital Experience

A 2019 study by the UPS found that different generations are using different methods for researching their buying options. Not surprisingly, research via in-person discussions with company sales reps is lagging behind research via a company website, an online search engine, and social media—by all demographics. This shift in research patterns mimics the shift in purchasing items online, which has been going on for some time—since the early 90s, to be exact. Amazon was one of the first eCommerce sites, and it has been joined by anywhere between 12 million and 24 million eCommerce sites across the globe, according to some estimates.

The convenience of shopping online skyrocketed eCommerce’s popularity, and the pandemic lockdowns made it a necessity for many. An Insider Intelligence article states, “Tech-savvy consumers looking for quick, seamless purchasing options will continue to lean on ecommerce throughout the next few years—and more consumers will jump on the bandwagon. We forecast US retail ecommerce sales will grow 16.1%, reaching $1.06 trillion in 2022.”

The importance of creating and providing a user-friendly, engaging digital experience for your manufacturing customers (while simultaneously optimizing your revenue) cannot be overstated. Keep in mind, however, that the digital experience isn’t limited to an eCommerce platform. You and your team will need to consider adding or improving upon your social media interactions, whether that’s Facebook, Twitter, Instagram, YouTube, or others. This is a topic for another day.

Creating Opportunities for Innovation

Making changes to manufacturing operations is never easy, but if you’re ready to become a manufacturing and eCommerce organization, then there are some steps to you’ll need to take, starting with researching your eCommerce platform options. You could start with an alternate platform, like BigCommerce, or with a comprehensive and modern ERP solution, like Acumatica, that provides both manufacturing and eCommerce capabilities.

If you implement ERP software that allows complete integration of your manufacturing, inventory, and office functions, you’ll have access to synchronized, real-time data, can manage inventory and production from a single system, and combine customer demand with production forecasts. Solution features should include Financial Management, Customer Management, Project Accounting, Advanced Inventory, Bill of Materials and Routing, Business Intelligence, Sales Order Management, Material Requirements Planning (MRP), and more.

For eCommerce purposes, the solution you choose should provide payment, order, fulfillment, and inventory tools that can be customized for your organization. A multi-channel ordering experience for your customers with order automation and warehouse management capabilities built into it is another requirement, as is a customer self-service portal.

A customer self-service portal allows customers to check orders, request support, and resolve issues online. And while the customers will enjoy instant service, you’ll be able to use their feedback to improve and personalize their experience.

It’s important to note that while having the foundational technology with manufacturing and eCommerce capabilities is critical, having a technical and sales team that can handle emerging needs as you move forward is, too. The ERP solution you choose should be provided by an ERP vendor and team that you can trust and rely upon for years to come.

Together, you’ll be able to create opportunities to innovate in the digital world.

Example of a Successful Manufacturing eCommerce Portal

According to a PwC article, 66% of U.S. manufacturers believe that implementing digital marketing and sales over the next two years is a “high” or “very high” priority, but there are manufacturers who already took the eCommerce plunge. Ray Allen Manufacturing is one of them.

The company manufactures canine equipment for military and police departments and has been since 1948. It bought a competitor in 2009 and then diversified by acquiring a company that makes products for dog training clubs, schools, kennels, and individual trainers. Ray Allen Manufacturing also operates Ray Allen B2B, which has an Amazon store. Though a thriving company, it was having challenges connected with its two different systems and inventories. The legacy system needed to be replaced, especially as it was unable to integrate with the company’s eCommerce software.

After researching for a year, former President Steve Cates selected Acumatica Cloud ERP. In Ray Allen Manufacturing’s customer success story, Cates says, “I had not heard of Acumatica but started doing some homework and looking at demos. I quickly realized Acumatica’s open platform was well-aligned with our company’s goals.”

The company implemented multiple editions, including Acumatica Manufacturing Edition and Acumatica Retail-Commerce Edition. In addition to streamlining their processes, gaining robust reporting, utilizing a central database, managing their accounting for various subcompanies in one place, eliminating manual, paper-based tasks, and being able to log in from anywhere, at any time, Cates says they’re able to manage their eCommerce needs easily.

“We chose Acumatica primarily because of its flexibility and its ability to integrate with an eCommerce platform,” says VP of Operations John Oakley. “[We] were able to integrate all of our websites directly into our ERP. It just really streamlined the whole process for us. We use it for purchasing, customer service—our inbound customer service agents are using it. It’s been a really solid back end [solution]. It essentially runs all aspects of our company.”

How We Can Help

As you contemplate the benefits of online selling through Acumatica, Aktion, a national ERP Value Added Reseller (VAR), IT infrastructure and cloud & managed services provider, would be happy to answer any questions about how they can help you embrace new digital trends through an eCommerce platform. Contact their team at any time.

And before you go, here are a few Acumatica eCommerce dos and don’ts for manufacturers:

Join us for the next Acumatica User Forum event covering the Acumatica ongoing education opportunities available to you. We will also review some of the new release features for your software on the horizon. Here is a recent recording of a previous User Forum event covering Generic Inquiries.

We truly value our Acumatica customers. When you register for this event, you’ll also receive a Grubhub voucher as a token of our appreciation.

Register Here

 

Learn how to set up and use import scenarios within Acumatica. We’ll review how you can import new records, define the import scenarios based upon the data needed and then map the data for import. Join us for an overview of how to create and use import scenarios within your Acumatica software.

We truly value our Acumatica customers. When you register for this event, you’ll also receive a Grubhub voucher as a token of our appreciation.

Register Here