Optimalisatie van productinformatie met DynamicWeb en Suneco
Sinds 2023 werkt Techmar samen met Suneco om hun digitale systemen verder te optimaliseren. Techmar, actief in de tuinsector, maakt gebruik van een DynamicWeb-omgeving om hun productinformatie efficiënt te beheren en te delen. Door de ondersteuning van Suneco is Techmar in staat om processen te stroomlijnen en hun B2B-klanten optimaal te bedienen.
De uitdaging: efficiënt productbeheer en toegankelijke informatie
Techmar richt zich voornamelijk op de B2B-markt, met hoveniers en bedrijven zoals Intergamma als belangrijke afnemers. Het bedrijf koopt producten in bij leveranciers en verkoopt deze door naar hun zakelijke klanten. Om hun productinformatie goed te kunnen beheren, maakt Techmar gebruik van het Product Information Management (PIM)-systeem van DynamicWeb. Dit systeem maakt het mogelijk om uitgebreide productdata te verzamelen, te organiseren en te delen met klanten.
Een ander belangrijk aspect van hun digitale strategie is de Digital Asset Portal (DAP), die Techmar gebruikt om marketingmateriaal zoals afbeeldingen op te slaan. Afnemers kunnen deze beelden eenvoudig downloaden voor gebruik op hun eigen websites. Het DAP-systeem is onlangs verder geoptimaliseerd, waarbij de laatste hand werd gelegd aan de laatste uitbreidingen. Dit zorgt ervoor dat klanten altijd toegang hebben tot up-to-date marketingmateriaal.
Doorontwikkeling en nieuwe functies
De beheerfase van het DynamicWeb-systeem bij Techmar is voornamelijk gericht op doorontwikkeling en het implementeren van nieuwe functies. De vragen die vanuit Techmar komen, hebben vaak betrekking op uitbreidingen en nieuwe mogelijkheden die de efficiëntie van hun processen verder verbeteren. Deze continue doorontwikkeling zorgt ervoor dat Techmar niet alleen bij blijft, maar zich kan aanpassen aan veranderende marktomstandigheden en klantbehoeften.
Aansluiting op GS1 voor betere productinformatie
Een belangrijke stap in de digitalisering van Techmar is de aansluiting op het GS1-portaal, dat wordt gebruikt door onder andere Intratuin. Dit portaal maakt het voor bedrijven mogelijk om productdata in te voeren en te delen, met specifieke aandacht voor certificeringen van gevaarlijke stoffen, accu’s en batterijen. Het GS1-systeem is vooral gericht op het voldoen aan regelgeving en het bieden van een gestandaardiseerde manier van productinformatie-uitwisseling.
Techmar heeft al een solide basis doordat ze gebruik maken van een PIM-systeem, waarin veel van de benodigde productinformatie al is verzameld. De uitdaging was om deze informatie efficiënt te koppelen aan het GS1-portaal. Vanuit Suneco hebben we dit probleem opgelost door een API-koppeling te ontwikkelen tussen het PIM-systeem van Techmar en GS1. Dit zorgt ervoor dat Techmar de productinformatie niet handmatig hoeft over te zetten, maar het automatisch vanuit hun PIM-systeem kan verstrekken aan GS1. Dit bespaart tijd en minimaliseert fouten. Win-win dus!
Continue verbetering en toekomstige uitdagingen
De samenwerking tussen Techmar en Suneco zorgt ervoor dat het bedrijf niet alleen voldoet aan de huidige digitale eisen, maar zich ook kan voorbereiden op toekomstige ontwikkelingen. De integratie van het PIM-systeem met GS1 en de optimalisatie van het DAP-systeem zijn enkele voorbeelden van hoe Techmar hun digitale processen steeds verder verbetert. Hierdoor kan Techmar zich volledig richten op het bedienen van hun B2B-klanten en het uitbreiden van hun marktaandeel.
Techmar blijft samen met Suneco werken aan nieuwe uitbreidingen en innovaties om hun digitale infrastructuur optimaal in te zetten. De samenwerking biedt een solide basis voor verdere groei in een steeds veranderende digitale wereld.
Hoe kan Suneco jou hierbij ondersteunen?
Benieuwd hoe Suneco jouw bedrijf kan helpen bij het optimaliseren van je digitale processen? Neem contact met ons op via onderstaand contactformulier en ontdek de mogelijkheden voor een efficiënter, toekomstbestendig systeem.
System.Web.HttpException (0x80004005): Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'. ---> System.NullReferenceException: Unable to get Form with ID: '1b0de621-d957-4b49-a4a3-3bf8e36184f3' off disk or from the cache. Check the file exists on disk at Umbraco.Forms.Core.Data.Storage.FormStorage.GetForm(Guid id) at Umbraco.Forms.Web.Controllers.UmbracoFormsController.GetForm(Guid formId) at Umbraco.Forms.Web.Controllers.UmbracoFormsController.GetFormModel(Guid formId, Nullable`1 recordId, String theme) at Umbraco.Forms.Web.Controllers.UmbracoFormsController.RenderForm(Guid formId, Nullable`1 recordId, String theme, Boolean includeScripts) at lambda_method(Closure , ControllerBase , Object[] ) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c.<BeginInvokeSynchronousActionMethod>b__9_0(IAsyncResult asyncResult, ActionInvocation innerInvokeState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_0.<InvokeActionMethodFilterAsynchronouslyRecursive>b__0() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_2.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_2.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_2.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_2.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2() at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_6.<BeginInvokeAction>b__4() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_1.<BeginInvokeAction>b__1(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) at System.Web.Mvc.Controller.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) at System.Web.Mvc.MvcHandler.<>c.<BeginProcessRequest>b__20_1(IAsyncResult asyncResult, ProcessRequestState innerState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) at System.Web.Mvc.HttpHandlerUtil.ServerExecuteHttpHandlerWrapper.<>c__DisplayClass5_0.<Wrap>b__0() at System.Web.Mvc.HttpHandlerUtil.ServerExecuteHttpHandlerWrapper.Wrap[TResult](Func`1 func) at System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage, VirtualPath path, VirtualPath filePath, String physPath, Exception error, String queryStringOverride) at System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage, VirtualPath path, VirtualPath filePath, String physPath, Exception error, String queryStringOverride) at System.Web.HttpServerUtility.Execute(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage) at System.Web.HttpServerUtility.Execute(IHttpHandler handler, TextWriter writer, Boolean preserveForm) at System.Web.Mvc.Html.ChildActionExtensions.ActionHelper(HtmlHelper htmlHelper, String actionName, String controllerName, RouteValueDictionary routeValues, TextWriter textWriter) at System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper htmlHelper, String actionName, String controllerName, Object routeValues) at ASP._Page_Views_MacroPartials_InsertUmbracoFormWithTheme_cshtml.Execute() in C:\home\site\wwwroot\Views\MacroPartials\InsertUmbracoFormWithTheme.cshtml:line 49 at System.Web.WebPages.WebPageBase.ExecutePageHierarchy() at System.Web.Mvc.WebViewPage.ExecutePageHierarchy() at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) at Umbraco.Web.Mvc.ProfilingView.Render(ViewContext viewContext, TextWriter writer) in D:\a\1\s\src\Umbraco.Web\Mvc\ProfilingView.cs:line 25 at Umbraco.Web.Mvc.ControllerExtensions.RenderViewResultAsString(ControllerBase controller, ViewResultBase viewResult) in D:\a\1\s\src\Umbraco.Web\Mvc\ControllerExtensions.cs:line 80 at Umbraco.Web.Macros.PartialViewMacroEngine.Execute(MacroModel macro, IPublishedContent content) in D:\a\1\s\src\Umbraco.Web\Macros\PartialViewMacroEngine.cs:line 98 at Umbraco.Web.Macros.MacroRenderer.<>c__DisplayClass17_0.<ExecuteMacroOfType>b__0() in D:\a\1\s\src\Umbraco.Web\Macros\MacroRenderer.cs:line 335 at Umbraco.Web.Macros.MacroRenderer.ExecuteProfileMacroWithErrorWrapper(MacroModel macro, String msgIn, Func`1 getMacroContent, Func`1 msgErr) in D:\a\1\s\src\Umbraco.Web\Macros\MacroRenderer.cs:line 306 at Umbraco.Web.Macros.MacroRenderer.ExecuteMacroWithErrorWrapper(MacroModel macro, String msgIn, String msgOut, Func`1 getMacroContent, Func`1 msgErr) in D:\a\1\s\src\Umbraco.Web\Macros\MacroRenderer.cs:line 265 at Umbraco.Web.Macros.MacroRenderer.ExecuteMacroOfType(MacroModel model, IPublishedContent content) in D:\a\1\s\src\Umbraco.Web\Macros\MacroRenderer.cs:line 332 at Umbraco.Web.Macros.MacroRenderer.Render(MacroModel macro, IPublishedContent content, IDictionary pageElements) in D:\a\1\s\src\Umbraco.Web\Macros\MacroRenderer.cs:line 238 at Umbraco.Web.PropertyEditors.ValueConverters.RteMacroRenderingValueConverter.<>c__DisplayClass7_0.<RenderRteMacros>b__1(String macroAlias, Dictionary`2 macroAttributes) in D:\a\1\s\src\Umbraco.Web\PropertyEditors\ValueConverters\RteMacroRenderingValueConverter.cs:line 64 at Umbraco.Web.Macros.MacroTagParser.ParseMacros(String text, Action`1 textFoundCallback, Action`2 macroFoundCallback) in D:\a\1\s\src\Umbraco.Web\Macros\MacroTagParser.cs:line 196 at Umbraco.Web.PropertyEditors.ValueConverters.RteMacroRenderingValueConverter.RenderRteMacros(String source, Boolean preview) in D:\a\1\s\src\Umbraco.Web\PropertyEditors\ValueConverters\RteMacroRenderingValueConverter.cs:line 70 at Umbraco.Web.PropertyEditors.ValueConverters.RteMacroRenderingValueConverter.Convert(Object source, Boolean preview) in D:\a\1\s\src\Umbraco.Web\PropertyEditors\ValueConverters\RteMacroRenderingValueConverter.cs:line 96 at Umbraco.Web.PropertyEditors.ValueConverters.RteMacroRenderingValueConverter.ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel referenceCacheLevel, Object inter, Boolean preview) in D:\a\1\s\src\Umbraco.Web\PropertyEditors\ValueConverters\RteMacroRenderingValueConverter.cs:line 78 at Umbraco.Core.Models.PublishedContent.PublishedPropertyType.ConvertInterToObject(IPublishedElement owner, PropertyCacheLevel referenceCacheLevel, Object inter, Boolean preview) in D:\a\1\s\src\Umbraco.Core\Models\PublishedContent\PublishedPropertyType.cs:line 219 at Our.Umbraco.DocTypeGridEditor.Models.DetachedPublishedProperty.<.ctor>b__7_1() at System.Lazy`1.CreateValue() at System.Lazy`1.LazyInitValue() at Our.Umbraco.DocTypeGridEditor.Models.DetachedPublishedProperty.GetValue(String culture, String segment) at Umbraco.Web.PublishedPropertyExtension.Value[T](IPublishedProperty property, String culture, String segment, Fallback fallback, T defaultValue) in D:\a\1\s\src\Umbraco.Web\PublishedPropertyExtension.cs:line 39 at Umbraco.Web.PublishedElementExtensions.Value[T](IPublishedElement content, String alias, String culture, String segment, Fallback fallback, T defaultValue) in D:\a\1\s\src\Umbraco.Web\PublishedElementExtensions.cs:line 144 at Umbraco.Web.PublishedModels.GridTitleTextButton.get_Text() at ASP._Page_Views_Partials_Grid_Editors_DocTypeGridEditor_gridTitleTextButton_cshtml.Execute() in C:\home\site\wwwroot\Views\Partials\Grid\Editors\DocTypeGridEditor\gridTitleTextButton.cshtml:line 12 at System.Web.WebPages.WebPageBase.ExecutePageHierarchy() at System.Web.Mvc.WebViewPage.ExecutePageHierarchy() at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) at Umbraco.Web.Mvc.ProfilingView.Render(ViewContext viewContext, TextWriter writer) in D:\a\1\s\src\Umbraco.Web\Mvc\ProfilingView.cs:line 25 at System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName, Object model, ViewDataDictionary viewData) at Our.Umbraco.DocTypeGridEditor.Web.Extensions.HtmlHelperExtensions.RenderDocTypeGridEditorItem(HtmlHelper helper, IPublishedElement content, String editorAlias, String viewPath, String previewViewPath, Boolean isPreview) at ASP._Page_app_plugins_doctypegrideditor_render_DocTypeGridEditor_cshtml.Execute() in C:\home\site\wwwroot\app_plugins\doctypegrideditor\render\DocTypeGridEditor.cshtml:line 28 at System.Web.WebPages.WebPageBase.ExecutePageHierarchy() at System.Web.Mvc.WebViewPage.ExecutePageHierarchy() at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) at Umbraco.Web.Mvc.ProfilingView.Render(ViewContext viewContext, TextWriter writer) in D:\a\1\s\src\Umbraco.Web\Mvc\ProfilingView.cs:line 25 at System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName, Object model, ViewDataDictionary viewData) at ASP._Page_Views_Partials_grid_editors_Base_cshtml.Execute() in C:\home\site\wwwroot\Views\Partials\grid\editors\Base.cshtml:line 20
