Providers
Within DynamicWeb, providers are pieces of code which handle specific tasks as a part of regular work:
- A PriceProvider handles product prices
- A ShippingProvider handles shipping fees and maybe integrates with an external shipping service
- A CartCalculationProvider handles, well, the calculation of shopping carts before checkout
- Etc.
As an extensibility point, providers are therefore interesting when you want to take over a core part of how the normal system functions and replace it with your own logic.
In order to create a custom provider, you should inherit from one the the provider base classes exposed by DynamicWeb - they are listed below.
| Provider | Area | Use |
|---|---|---|
| BaseProvider | Integration | Inherit from this provider to create custom integration providers – which communicate with an external system or e.g. imports from or exports to an unsupported file format. |
| AddinProvider | Platform | Use this to create your own add-in source for the Appstore, e.g. a private NuGet package feed. |
| HealthProviderBase | Platform | Use this to create custom groups or categories of Health-checks e.g. to verify the integrity of custom data. |
| ILoggerProvider | Platform | Use this provider for custom logging needs, e.g. if you need to generate logs for an external system. |
| SqlDataProviderBase | Platform | Use this to implement custom providers for data portability – a GDPR-related feature which allows users to download data about themselves. Typically used if you have custom data on users which should also be downloadable. |
| UpdateProvider | Platform | Use this provider to roll out updates, e.g. new database tables, columns, rows – or files. |
| IConfigurationProvider | Platform | Use this to read and write custom settings – e.g. to create your own custom extension to our GlobalSettings. |
| NavigationProvider | Platform | Used to extend the standard DynamicWeb navigation system, adding non-standard nodes to the NavigationItem. These nodes are than available in the NavigationTreeViewModel depending on the NavigationSettings passed to it. |
| IndexProviderBase | Repositories | Use this to implement a different index provider instead of Lucene. |
| CodeProviderBase | Repositories | This provider allows you to create dynamic or calculated right-side values in index query expressions – of the type ‘Code’. This could be e.g. ‘Customers who bought [ProductID] within 30 days’. |
| AddressValidatorProvider | Commerce | Used to implement address validation for orders and user addresses. |
| CartCalculationProvider | Commerce | Used to implement a custom cart calculation process, handling e.g. sales taxes, discounts, loyalty points, etc. |
| ConfigurableVatProvider | Commerce | Used to calculate VAT on a product. Mainly used in complex scenarios where VAT is calculated by an external system. |
| FeeProvider | Commerce | Used to manipulate shipping fees on an order. |
| FeedProvider | Commerce | Used to create custom formats for product feeds. |
| PriceProvider | Commerce | Represents a price provider used to overwrite or extend how Dynamicweb calculate prices by overriding FindPrice(PriceContext, PriceProductSelection) |
| FieldTypeProvider | Platform | Use this to create custom FieldTypeProviders to supplement the existing ProductFieldTypeProvider |
| ProductFieldTypeProvider | Commerce | Used to create custom product field types, e.g. calculated fields. |
| ShippingProvider | Commerce | Used to create custom shipping providers, typically integrations to external shipping services. |
| CheckoutHandler | Commerce | Used to create custom payment providers, typically integrations to external payment processors. |
| StockLevelProvider | Commerce | Used to override the standard stock level calculation in DynamicWeb, e.g. to combine stock from several external systems or to manipulate stock levels in another manner. |
| TaxProvider | Commerce | Used to calculate taxes in a product or order, e.g. by integrating with an external tax calculation service like AvaTax or Vertex. |
| ReturnMerchandiseAuthorizationReplacementOrderProvider | Commerce | |
| UrlDataProvider | Platform | |
| SmartSearchDataProvider | Users | |
| ExternalLoginProvider | Users | |
| DataItemProvider | Deployment | |
| DataProvider | Deployment | |
| DeploymentProvider | Deployment | |
| ImageAttributesProvider | Platform | |
| ImageConverterProvider | Platform | |
| ImageMetadataProvider | Platform | |
| ImageSizeProvider | Platform | |
| RecipientContentProvider | Emails | |
| EmailRecipientProvider | Emails | |
| EmailResendProvider | Emails | |
| EmailTrackingProvider | Emails | |
| MessageDeliveryProvider | Emails |