
SUEZ
SUEZ provides solutions that maintain, optimise and secure the resources essential for our future. They supply 92 million people across five continents with drinking water and 65 million with sanitation services. SUEZ also provides nearly 52 million people with waste collection services and recovers more than 14 million tonnes of waste to create valuable new materials and energy.
Industry | Water, waste management, energy |
Technology | Mendix, Java, Freemarker templating engine |
Key Achievements
- Keeping the benefits of a Mendix-based e-commerce platform with a tailor-made plug-in
- Improved customer experience thanks to better access to the offered products
- All Mendix users can now build SEO-friendly web pages
The challenge
Business Need
SUEZ built a Mendix-based e-commerce platform to enable their clients to easily order SUEZ’s products (like waste collectors). The challenge the SUEZ faced was building SEO-friendly web pages. Mendix allows its users to build a Single Page Application only, therefore search-engine bots cannot position such a page properly. To help their customers, SUEZ needed to solve this challenge and they chose to partner with us.
The solution
Project Details
To solve the problem, we developed a custom Mendix plugin (available here). It enables SUEZ employees to build web pages that are SEO-friendly and can be easily accessed by their customers. In detail, it allows to:
- Integrate with a third-party module that allows to create deep links. Our SEO module therefore helps to „break-up” the Single Page Application into SEOfriendly parts.
- As a later extension, we have integrated our solution with Mendix’s native URL functionality – for the convenience of the configurator.
- Configure a custom link handler that works with search-engine bots and handles them SEO-friendly pages.
- Read values from Mendix’s Entity attributes and substitute them into HTML template, through a built-in templating mechanism. This means that our solution can create dynamic pages.
- Create a sitemap that lists all important parts of the Mendix solution for the bots to create a direct link in the search engine.
All of the above turns the Mendix Single Page Application into a compartmentalised website. This allows the end-customers to easily access through search-engines the SUEZ’s products they wish to purchase.
The results
Business Benefits
In result, Suez can keep using its Mendix solution while ensuring that their customers can easily access the needed products.
Our SEO plugin is accessible in the Medix App Store and can be utilised by all Mendix users (the solution is available here) to solve the problem of a Single Page Application.
Key achievements
- SUEZ can keep using its Mendix-based e-commerce platform.
- SUEZ’s customers can now easily access and purchase needed products.
- All Mendix users can now build SEO-friendly web pages.
System.NullReferenceException: Object reference not set to an instance of an object. at Umbraco.Cms.Core.Models.PublishedContent.PublishedContentType..ctor(IContentTypeComposition contentType, IPublishedContentTypeFactory factory) at Our.Umbraco.DocTypeGridEditor.Helpers.DocTypeGridEditorHelper.<>c__DisplayClass15_0.<GetContentTypesByAlias>b__0() at Umbraco.Extensions.AppCacheExtensions.<>c__DisplayClass5_0`1.<GetCacheItem>b__0() at Umbraco.Cms.Core.Cache.SafeLazy.<>c__DisplayClass1_0.<GetSafeLazy>b__0() --- End of stack trace from previous location --- at Umbraco.Cms.Core.Cache.ObjectCacheAppCache.Get(String key, Func`1 factory, Nullable`1 timeout, Boolean isSliding, String[] dependentFiles) at Umbraco.Cms.Core.Cache.ObjectCacheAppCache.Get(String key, Func`1 factory) at Umbraco.Cms.Core.Cache.DeepCloneAppCache.Get(String key, Func`1 factory) at Umbraco.Extensions.AppCacheExtensions.GetCacheItem[T](IAppCache provider, String cacheKey, Func`1 getCacheItem) at Our.Umbraco.DocTypeGridEditor.Helpers.DocTypeGridEditorHelper.GetContentTypesByAlias(String contentTypeAlias) at Our.Umbraco.DocTypeGridEditor.Helpers.DocTypeGridEditorHelper.ConvertValue(String id, String contentTypeAlias, String dataJson) at Our.Umbraco.DocTypeGridEditor.Helpers.DocTypeGridEditorHelper.RenderDocTypeGridEditorItem(IViewComponentHelper helper, IHtmlHelper htmlHelper, Object model) at AspNetCoreGeneratedDocument.App_Plugins_DocTypeGridEditor_Render_DocTypeGridEditor.ExecuteAsync() at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, Boolean invokeViewStarts) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context) at Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.RenderPartialCoreAsync(String partialViewName, Object model, ViewDataDictionary viewData, TextWriter writer) at Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.PartialAsync(String partialViewName, Object model, ViewDataDictionary viewData) at AspNetCore.Views_Partials_grid_editors_base.ExecuteAsync() in C:\home\site\wwwroot\Views\Partials\grid\editors\base.cshtml:line 11
Case studies
Contact
Start your project with Objectivity
