Release

Vendr 2.0.0 Release

07 October 2021

Our 2.0.0 release is the latest version of Vendr, with dual targeting for Umbraco version 8 and the new Umbraco .Net Core version 9. Find out all you need to know about this release and how you can get your hands on it.

Vendr 2.0.0 Release

As we blogged about a couple of months ago, we've made some real progress on getting Vendr .NET Core ready and that momentum has not stopped. Last month we released our Vendr 2.0.0 RC and now we're ready for the next step.

Vendr 2.0.0

Today we are pleased to announce the release of Vendr 2.0.0 🎉

Since the release of the Vendr 2.0.0 RC last month, we have carried out further testing, as well as sneaking in one new feature, configurable rounding, but more on that later.

What's new in Vendr 2.0.0?

.NET Core / Umbraco v9

The biggest thing in Vendr 2.0.0 is that it now supports .NET Core (Umbraco v9) as well as .NET Framework (Umbraco v8). This is a huge leap for Vendr and we made a conscious effort to ensure we could support both versions of Umbraco in a single package so that we serve as many of our customers as possible regardless of which platform they choose to use.

Vendr in Umbraco 9

Project Refactor

In order to achieve this we have had to do a fair bit of project refactoring (be sure to checkout May’s blog post for why we needed to do this). For the most part though, functionally, things are a good 95% the same and so for most people the upgrade should be a case of finding where things have moved to, rather than figuring out a new way of doing things. This restructuring will affect people upgrading on v8 as well as those upgrading to v9, but we believe it’s important to align the project structure between versions to make future developments much simpler. And really, it’s a nice way to get you ready for the v9 port when you are comfortable with the move.

In Vendr v1, the project was broken down into the following packages:

  • Vendr.Core (.NET Framework)
    • The core project where models, persistence, services and API's are all defined and implemented
  • Vendr.Core.Web (.NET Framework)
    • The project where any core Vendr related web logic exists such as payment provider callback routes
  • Vendr.Web (.NET Framework)
    • The project where anything Umbraco UI would live such as the UI, discount providers and property editors
  • Vendr (.NET Framework)
    • The back office and front end UI files
    • The main Vendr entry point

For Vendr v2 however we have restructured things into the following packages.

  • Vendr.Common (.NET Standard)
    • Common Models
    • Collections
    • Patterns
    • Helpers
  • Vendr.Core (.NET Standard)
    • Models
    • Interfaces
    • Services
    • Extensions
    • etc
  • Vendr.Infrastructure (.NET Framework + .NET Core)
    • Interface implementations with 3rd party dependencies (non Umbraco)
    • Repositories
    • DB Transfer objects
    • DB Mappers
  • Vendr.Web (.NET Framework + .NET Core)
    • Common web related elements / extensions / helpers
  • Vendr.Umbraco (.NET Framework + .NET Core)
    • Umbraco implementations of services
    • Property editors
    • Package actions
    • Value Converters
    • Cache Refreshers
    • Migrations
  • Vendr.Umbraco.Web (.NET Framework + .NET Core)
    • Configuration
      • Front End Umbraco API routes
    • Back office web logic
      • Sections
      • Controllers
      • Trees
      • ViewModels/DTOs
      • View Model Mappers
      • etc
  • Vendr.Umbraco.Web.UI
    • Front end UI files specific to Umbraco Views
      • Email Templates
      • Print Templates
      • Export Templates
    • Back office UI files: App_Plugins\Vendr
      • Angular
      • CSS
      • HTML
  • Vendr.Umbraco.Startup (.NET Framework + .NET Core)
    • Event Handlers
    • Umbraco Builder / Composition Extensions
  • Vendr (.NET Framework + .NET Core)
    • The main Vendr entry point

In terms of changes, there may be a few helpers that have moved to Dependency Injectable services, but the only real area we have made some improvements in is with Payment Providers.

Payment Provider Updates

One of the big reasons we chose the route we did for our project structure is to allow payment providers to be coded once and be shared between v8 and v9 instances. In order to do that we have had to move them to be compiled against .netstandard 2.0. Because of this there will be some API changes to use the .netstandard versions of some classes.

Given we had to make this change and given what we’ve learnt from writing payment providers, we also took the opportunity to give them a slight update. This has come in 2 changes.

  1. All methods that are likely to communicate with a 3rd party are now asynchronous.
  2. All methods now accept a consistent `PaymentProviderContext` object which contains information that might be useful to a payment provider such as the Vendr endpoint URLs and the related order etc. We had these before, but they were inconsistently passed to the different methods, but with the `PaymentProviderContext` this ensures all methods receive the same contextual information.

Custom Order Rounding

Rounding is always a challenging issue and from the very beginning, Vendr has always applied a unit price rounding strategy which seemed to make most sense to us, however over the last year we've had customers ask about alternative rounding options such as order line rounding, which appears to be a much more common practice in Europe, and more recently we've seen some payment gateways require these alternative rounding methods, so whilst we were updating things we thought we'd take this opportunity to introduce this new feature making things more flexible for those that need it.

Choosing your rounding strategy is as simple as selecting the option in your stores settings.

Vendr order rounding method option

What about all the add-ons?

To coincide with the v2 release of Vendr, we are also pleased to announce that we will also be releasing v2 versions of all core supported payment providers and add-on packages, so right from the get go, you'll have all these extras available to use today.

  • Payment Providers
    • Stripe
    • PayPal
    • Opayo
    • Dibs
    • Klarna
    • Mollie
    • Invoicing
  • Packages
    • Vendr.Checkout
    • Vendr.uSync
    • Vendr.Deploy

And the documentation?

Not only have we done all of the above, but we've also gone through all the Vendr docs and updated all code examples to be correct for whichever version of Vendr and Umbraco you are using.

Vendr v2 docs

Do you have a demo?

Indeed we do. We will be updating the try.vendr.net demo shortly, but in the meantime we have source code for the demo Blendid store available on GitHub. There are demo's for both .NET Framework / v8 as well as .NET Core / v9.

Vendr Demo Store

How to get access to Vendr 2.0.0?

The Vendr 2.0.0 release is available now from the NuGet gallery, as well as in Umbraco package form for v8 sites on our page on the Umbraco developer portal.

Frequently asked questions

Can I upgrade my Umbraco v8, Vendr v1 site to Vendr v2?

Yes you can. Vendr v2 supports both Umbraco v8 and Umbraco v9. Given the project restructure though we've found the best way to upgrade is to remove Vendr v1 and then install Vendr v2 in it's place.

Is there an upgrade fee for Vendr v2?

No. If you are within your licence 12 month upgrade window, you can upgrade to Vendr v2 for no extra charge. If you are outside of an upgrade window, you can purchase a standard upgrade licence which will give you a further 12 months of updates which will cover the ability to upgrade to v2.

Will you be adding new features to Vendr v1?

No. We made Vendr v2 multi targeted to ensure that we could support both Umbraco v8 and v9 and so anyone wanting the latest features can continue to upgrade to this version. There will be a slight refactor needed given the project structure changes, but everything that was possible in v1 is there in v2, it just may have changed location.

What's next?

As you can imagine all of these updates have taken up a lot of time and effort and so unfortunately this has pushed the timeline back on some features we had planned. With Vendr v2 out the door, we will be looking to regroup and review any issues that come up with the new release, but then refocus back to feature development.

We'll also be reaching out to community contributors who created payment providers and add-ons for Vendr to see if we can help get those packages updated for v2 as well.

Need help?

While Vendr 2.0.0 is ready to go, as ever, if you have any bugs or issues please feedback on our issue tracker. 

If developers have any questions on implementing the changes from Vendr 2.0.0, these should be asked on the Umbraco developer portal support forums.

Thank you

And with that we'd like to thank everyone who supported us during this migration and those that helped test out the alpha's and RC's and reported issues. We couldn't have done it without you.

Thanks for reading,

Team Vendr.