We learn & share

ACA Group Blog

Read more about our thoughts, views, and opinions on various topics, important announcements, useful insights, and advice from our experts.

Featured

8 MAY 2025
Reading time 5 min

In the ever-evolving landscape of data management, investing in platforms and navigating migrations between them is a recurring theme in many data strategies. How can we ensure that these investments remain relevant and can evolve over time, avoiding endless migration projects? The answer lies in embracing ‘Composability’ - a key principle for designing robust, future-proof data (mesh) platforms. Is there a silver bullet we can buy off-the-shelf? The data-solution market is flooded with data vendor tools positioning themselves as the platform for everything, as the all-in-one silver bullet. It's important to know that there is no silver bullet. While opting for a single off-the-shelf platform might seem like a quick and easy solution at first, it can lead to problems down the line. These monolithic off-the-shelf platforms often end up inflexible to support all use cases, not customizable enough, and eventually become outdated.This results in big complicated migration projects to the next silver bullet platform, and organizations ending up with multiple all-in-one platforms, causing disruptions in day-to-day operations and hindering overall progress. Flexibility is key to your data mesh platform architecture A complete data platform must address numerous aspects: data storage, query engines, security, data access, discovery, observability, governance, developer experience, automation, a marketplace, data quality, etc. Some vendors claim their all-in-one data solution can tackle all of these. However, typically such a platform excels in certain aspects, but falls short in others. For example, a platform might offer a high-end query engine, but lack depth in features of the data marketplace included in their solution. To future-proof your platform, it must incorporate the best tools for each aspect and evolve as new technologies emerge. Today's cutting-edge solutions can be outdated tomorrow, so flexibility and evolvability are essential for your data mesh platform architecture. Embrace composability: Engineer your future Rather than locking into one single tool, aim to build a platform with composability at its core. Picture a platform where different technologies and tools can be seamlessly integrated, replaced, or evolved, with an integrated and automated self-service experience on top. A platform that is both generic at its core and flexible enough to accommodate the ever-changing landscape of data solutions and requirements. A platform with a long-term return on investment by allowing you to expand capabilities incrementally, avoiding costly, large-scale migrations. Composability enables you to continually adapt your platform capabilities by adding new technologies under the umbrella of one stable core platform layer. Two key ingredients of composability Building blocks: These are the individual components that make up your platform. Interoperability: All building blocks must work together seamlessly to create a cohesive system. An ecosystem of building blocks When building composable data platforms, the key lies in sourcing the right building blocks. But where do we get these? Traditional monolithic data platforms aim to solve all problems in one package, but this stifles the flexibility that composability demands. Instead, vendors should focus on decomposing these platforms into specialized, cost-effective components that excel at addressing specific challenges. By offering targeted solutions as building blocks, they empower organizations to assemble a data platform tailored to their unique needs. In addition to vendor solutions, open-source data technologies also offer a wealth of building blocks. It should be possible to combine both vendor-specific and open-source tools into a data platform tailored to your needs. This approach enhances agility, fosters innovation, and allows for continuous evolution by integrating the latest and most relevant technologies. Standardization as glue between building blocks To create a truly composable ecosystem, the building blocks must be able to work together, i.e. interoperability. This is where standards come into play, enabling seamless integration between data platform building blocks. Standardization ensures that different tools can operate in harmony, offering a flexible, interoperable platform. Imagine a standard for data access management that allows seamless integration across various components. It would enable an access management building block to list data products and grant access uniformly. Simultaneously, it would allow data storage and serving building blocks to integrate their data and permission models, ensuring that any access management solution can be effortlessly composed with them. This creates a flexible ecosystem where data access is consistently managed across different systems. The discovery of data products in a catalog or marketplace can be greatly enhanced by adopting a standard specification for data products. With this standard, each data product can be made discoverable in a generic way. When data catalogs or marketplaces adopt this standard, it provides the flexibility to choose and integrate any catalog or marketplace building block into your platform, fostering a more adaptable and interoperable data ecosystem. A data contract standard allows data products to specify their quality checks, SLOs, and SLAs in a generic format, enabling smooth integration of data quality tools with any data product. It enables you to combine the best solutions for ensuring data reliability across different platforms. Widely accepted standards are key to ensuring interoperability through agreed-upon APIs, SPIs, contracts, and plugin mechanisms. In essence, standards act as the glue that binds a composable data ecosystem. A strong belief in evolutionary architectures At ACA Group, we firmly believe in evolutionary architectures and platform engineering, principles that seamlessly extend to data mesh platforms. It's not about locking yourself into a rigid structure but creating an ecosystem that can evolve, staying at the forefront of innovation. That’s where composability comes in. Do you want a data platform that not only meets your current needs but also paves the way for the challenges and opportunities of tomorrow? Let’s engineer it together Ready to learn more about composability in data mesh solutions? {% module_block module "widget_f1f5c870-47cf-4a61-9810-b273e8d58226" %}{% module_attribute "buttons" is_json="true" %}{% raw %}[{"appearance":{"link_color":"light","primary_color":"primary","secondary_color":"primary","tertiary_color":"light","tertiary_icon_accent_color":"dark","tertiary_text_color":"dark","variant":"primary"},"content":{"arrow":"right","icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"tertiary_icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"text":"Contact us now!"},"target":{"link":{"no_follow":false,"open_in_new_tab":false,"rel":"","sponsored":false,"url":{"content_id":230950468795,"href":"https://25145356.hs-sites-eu1.com/en/contact","href_with_scheme":null,"type":"CONTENT"},"user_generated_content":false}},"type":"normal"}]{% endraw %}{% end_module_attribute %}{% module_attribute "child_css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "definition_id" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "field_types" is_json="true" %}{% raw %}{"buttons":"group","styles":"group"}{% endraw %}{% end_module_attribute %}{% module_attribute "isJsModule" is_json="true" %}{% raw %}true{% endraw %}{% end_module_attribute %}{% module_attribute "label" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "module_id" is_json="true" %}{% raw %}201493994716{% endraw %}{% end_module_attribute %}{% module_attribute "path" is_json="true" %}{% raw %}"@projects/aca-group-project/aca-group-app/components/modules/ButtonGroup"{% endraw %}{% end_module_attribute %}{% module_attribute "schema_version" is_json="true" %}{% raw %}2{% endraw %}{% end_module_attribute %}{% module_attribute "smart_objects" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "smart_type" is_json="true" %}{% raw %}"NOT_SMART"{% endraw %}{% end_module_attribute %}{% module_attribute "tag" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "type" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "wrap_field_tag" is_json="true" %}{% raw %}"div"{% endraw %}{% end_module_attribute %}{% end_module_block %}

Read more
We learn & share

ACA Group Blog

Read more about our thoughts, views, and opinions on various topics, important announcements, useful insights, and advice from our experts.

Featured

8 MAY 2025
Reading time 5 min

In the ever-evolving landscape of data management, investing in platforms and navigating migrations between them is a recurring theme in many data strategies. How can we ensure that these investments remain relevant and can evolve over time, avoiding endless migration projects? The answer lies in embracing ‘Composability’ - a key principle for designing robust, future-proof data (mesh) platforms. Is there a silver bullet we can buy off-the-shelf? The data-solution market is flooded with data vendor tools positioning themselves as the platform for everything, as the all-in-one silver bullet. It's important to know that there is no silver bullet. While opting for a single off-the-shelf platform might seem like a quick and easy solution at first, it can lead to problems down the line. These monolithic off-the-shelf platforms often end up inflexible to support all use cases, not customizable enough, and eventually become outdated.This results in big complicated migration projects to the next silver bullet platform, and organizations ending up with multiple all-in-one platforms, causing disruptions in day-to-day operations and hindering overall progress. Flexibility is key to your data mesh platform architecture A complete data platform must address numerous aspects: data storage, query engines, security, data access, discovery, observability, governance, developer experience, automation, a marketplace, data quality, etc. Some vendors claim their all-in-one data solution can tackle all of these. However, typically such a platform excels in certain aspects, but falls short in others. For example, a platform might offer a high-end query engine, but lack depth in features of the data marketplace included in their solution. To future-proof your platform, it must incorporate the best tools for each aspect and evolve as new technologies emerge. Today's cutting-edge solutions can be outdated tomorrow, so flexibility and evolvability are essential for your data mesh platform architecture. Embrace composability: Engineer your future Rather than locking into one single tool, aim to build a platform with composability at its core. Picture a platform where different technologies and tools can be seamlessly integrated, replaced, or evolved, with an integrated and automated self-service experience on top. A platform that is both generic at its core and flexible enough to accommodate the ever-changing landscape of data solutions and requirements. A platform with a long-term return on investment by allowing you to expand capabilities incrementally, avoiding costly, large-scale migrations. Composability enables you to continually adapt your platform capabilities by adding new technologies under the umbrella of one stable core platform layer. Two key ingredients of composability Building blocks: These are the individual components that make up your platform. Interoperability: All building blocks must work together seamlessly to create a cohesive system. An ecosystem of building blocks When building composable data platforms, the key lies in sourcing the right building blocks. But where do we get these? Traditional monolithic data platforms aim to solve all problems in one package, but this stifles the flexibility that composability demands. Instead, vendors should focus on decomposing these platforms into specialized, cost-effective components that excel at addressing specific challenges. By offering targeted solutions as building blocks, they empower organizations to assemble a data platform tailored to their unique needs. In addition to vendor solutions, open-source data technologies also offer a wealth of building blocks. It should be possible to combine both vendor-specific and open-source tools into a data platform tailored to your needs. This approach enhances agility, fosters innovation, and allows for continuous evolution by integrating the latest and most relevant technologies. Standardization as glue between building blocks To create a truly composable ecosystem, the building blocks must be able to work together, i.e. interoperability. This is where standards come into play, enabling seamless integration between data platform building blocks. Standardization ensures that different tools can operate in harmony, offering a flexible, interoperable platform. Imagine a standard for data access management that allows seamless integration across various components. It would enable an access management building block to list data products and grant access uniformly. Simultaneously, it would allow data storage and serving building blocks to integrate their data and permission models, ensuring that any access management solution can be effortlessly composed with them. This creates a flexible ecosystem where data access is consistently managed across different systems. The discovery of data products in a catalog or marketplace can be greatly enhanced by adopting a standard specification for data products. With this standard, each data product can be made discoverable in a generic way. When data catalogs or marketplaces adopt this standard, it provides the flexibility to choose and integrate any catalog or marketplace building block into your platform, fostering a more adaptable and interoperable data ecosystem. A data contract standard allows data products to specify their quality checks, SLOs, and SLAs in a generic format, enabling smooth integration of data quality tools with any data product. It enables you to combine the best solutions for ensuring data reliability across different platforms. Widely accepted standards are key to ensuring interoperability through agreed-upon APIs, SPIs, contracts, and plugin mechanisms. In essence, standards act as the glue that binds a composable data ecosystem. A strong belief in evolutionary architectures At ACA Group, we firmly believe in evolutionary architectures and platform engineering, principles that seamlessly extend to data mesh platforms. It's not about locking yourself into a rigid structure but creating an ecosystem that can evolve, staying at the forefront of innovation. That’s where composability comes in. Do you want a data platform that not only meets your current needs but also paves the way for the challenges and opportunities of tomorrow? Let’s engineer it together Ready to learn more about composability in data mesh solutions? {% module_block module "widget_f1f5c870-47cf-4a61-9810-b273e8d58226" %}{% module_attribute "buttons" is_json="true" %}{% raw %}[{"appearance":{"link_color":"light","primary_color":"primary","secondary_color":"primary","tertiary_color":"light","tertiary_icon_accent_color":"dark","tertiary_text_color":"dark","variant":"primary"},"content":{"arrow":"right","icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"tertiary_icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"text":"Contact us now!"},"target":{"link":{"no_follow":false,"open_in_new_tab":false,"rel":"","sponsored":false,"url":{"content_id":230950468795,"href":"https://25145356.hs-sites-eu1.com/en/contact","href_with_scheme":null,"type":"CONTENT"},"user_generated_content":false}},"type":"normal"}]{% endraw %}{% end_module_attribute %}{% module_attribute "child_css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "definition_id" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "field_types" is_json="true" %}{% raw %}{"buttons":"group","styles":"group"}{% endraw %}{% end_module_attribute %}{% module_attribute "isJsModule" is_json="true" %}{% raw %}true{% endraw %}{% end_module_attribute %}{% module_attribute "label" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "module_id" is_json="true" %}{% raw %}201493994716{% endraw %}{% end_module_attribute %}{% module_attribute "path" is_json="true" %}{% raw %}"@projects/aca-group-project/aca-group-app/components/modules/ButtonGroup"{% endraw %}{% end_module_attribute %}{% module_attribute "schema_version" is_json="true" %}{% raw %}2{% endraw %}{% end_module_attribute %}{% module_attribute "smart_objects" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "smart_type" is_json="true" %}{% raw %}"NOT_SMART"{% endraw %}{% end_module_attribute %}{% module_attribute "tag" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "type" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "wrap_field_tag" is_json="true" %}{% raw %}"div"{% endraw %}{% end_module_attribute %}{% end_module_block %}

Read more

All blog posts

Lets' talk!

We'd love to talk to you!

Contact us and we'll get you connected with the expert you deserve!

Lets' talk!

We'd love to talk to you!

Contact us and we'll get you connected with the expert you deserve!

Lets' talk!

We'd love to talk to you!

Contact us and we'll get you connected with the expert you deserve!

Lets' talk!

We'd love to talk to you!

Contact us and we'll get you connected with the expert you deserve!

Liferay AI search
Reading time 3 min
8 MAY 2025

Liferay DXP has become a widely adopted portal platform for building and managing advanced digital experiences over recent years. Organizations use it for intranets, customer portals, self-service platforms, and more. While Liferay DXP is known for its user-friendliness, its default search functionality can be further optimized to meet modern user expectations. To address this, ACA developed an advanced solution that significantly enhances Liferay’s standard search capabilities. Learn all about it in this blog. Searching in Liferay: not always efficient Traditionally, organizational searches relied on individual keywords . For example, intranet users would search terms like "leave" or "reimbursement" to find the information they needed. This often resulted in an overload of results and documents , leaving users to sift through them manually to find relevant information—a time-consuming and inefficient process that hampers the user experience. The way users search had changed The rise of AI tools like ChatGPT has transformed how people search for information. This is also visible in online search engines like Google, where users increasingly phrase their queries as complete questions. For example: “How do I apply for leave?” or “What travel reimbursement am I entitled to?” To meet these evolving search needs, search functionality must not only be fast but also capable of understanding natural language. Unfortunately, Liferay’s standard search falls short in this area. ACA develops advanced AI-powered search for Liferay To accommodate today’s search behavior, ACA has created an advanced solution for Liferay DXP 7.4 installations: Liferay AI Search . Leveraging the GPT-4o language model , we’ve succeeded in significantly improving Liferay’s standard search capabilities. GPT-4o is a state-of-the-art language model trained on an extensive dataset of textual information. By integrating GPT-4o into our solution, we’ve customized search algorithms to handle more complex queries , including natural language questions. How does Liferay AI Search work? Closed dataset The AI model only accesses data from within the closed Liferay environment. This ensures that only relevant documents— such as those from the Library and Media Library—are accessible to the model. Administrators controls Administrators can decide which content is included in the GPT-4o dataset, allowing them to further optimize the accuracy and relevance of search results. Depending on the user’s profile, the answers and search results are tailored to the information they are authorized to access. Direct answers Thanks to GPT-4o integration, the search functionality provides not only traditional results but also direct answers to user queries. This eliminates the need for users to dig through search results to find the specific information they need. The comparison below illustrates the difference between search results from Liferay DXP’s standard search and the enhanced results from ACA’s Liferay AI Search. Want to see Liferay AI Search in action? Check out the demo below or via this link! Be nefits of Liferay AI Search Whether you use Liferay DXP for your customer platform or intranet, Liferay AI Search offers numerous advantages for your organization: Increased user satisfaction: Users can quickly find precise answers to their queries. Improved productivity: Less time is spent searching for information. Enhanced knowledge sharing: Important information is easier to locate and share. Conclusion With Liferay AI Search, ACA elevates Liferay DXP’s search functionality to meet modern user expectations. By integrating GPT-4o into Liferay DXP 7.4, this solution delivers not only traditional search results but also direct, relevant answers to complex, natural language queries. This leads to a faster, more user-friendly, and efficient search experience that significantly boosts both productivity and user satisfaction. Ready to optimize your Liferay platform search functionality Contact us today!

Read more
eventsourcing and cqrs
eventsourcing and cqrs
Reading time 1 min
8 MAY 2025

Staying current with the latest trends and best practices is crucial in the rapidly evolving world of software development. Innovative approaches like EventSourcing and CQRS can enable developers to build flexible, scalable, and secure systems. At Domain-Driven Design (DDD) Europe 2022 , Paolo Banfi delivered an enlightening talk on these two techniques. What is EventSourcing? EventSourcing is an innovative approach to data storage that prioritises the historical context of an object. Rather than just capturing the present state of an object, EventSourcing stores all the events that led to that state. Creating a well-designed event model is critical when implementing EventSourcing. The event model defines the events that will be stored and how they will be structured. Careful planning of the event model is crucial because it affects the ease of data analysis. Modifying the event model after implementation can be tough, so it's important to get it right from the beginning. What is CQRS CQRS (Command Query Responsibility Segregation) is a technique that separates read and write operations in a system to improve efficiency and understandability. In a traditional architecture, an application typically interacts with a database using a single interface. However, CQRS separates the read and write operations, each of which is handled by different components. Combining EventSourcing and CQRS One of the advantages of combining EventSourcing and CQRS is that it facilitates change tracking and data auditing. By keeping track of all the events that led to a particular state, it's easier to track changes over time. This can be particularly useful for applications that require auditing or regulation. Moreover, separating read and write operations in this way provides several benefits. Firstly, it optimises the system by reducing contention and improving scalability. Secondly, it simplifies the system by isolating the concerns of each side. Finally, it enhances the security of sensitive data by limiting access to the write side of the system. Another significant advantage of implementing CQRS is the elimination of the need to traverse the entire event stream to determine the current state. By separating read and write operations, the read side of the system can maintain dedicated models optimised for querying and retrieving specific data views. As a result, when querying the system for the latest state, there is no longer a requirement to traverse the entire event stream. Instead, the optimised read models can efficiently provide the necessary data, leading to improved performance and reduced latency. When to use EventSourcind and CQRS It's important to note that EventSourcing and CQRS may not be suitable for every project. Implementing EventSourcing and CQRS can require more work upfront compared to traditional approaches. Developers need to invest time in understanding and implementing these approaches effectively. However, for systems that demand high scalability, flexibility or security, EventSourcing and CQRS can provide an excellent solution. Deciding whether to use CQRS or EventSourcing for your application depends on various factors, such as the complexity of your domain model, the scalability requirements, and the need for a comprehensive audit trail of system events. Developers must evaluate the specific needs of their project before deciding whether to use these approaches. CQRS is particularly useful for applications with complex domain models that require different data views for different use cases. By separating the read and write operations into distinct models, you can optimise the read operations for performance and scalability, while still maintaining a single source of truth for the data. Event Sourcing is ideal when you need to maintain a complete and accurate record of all changes to your system over time. By capturing every event as it occurs and storing it in an append-only log, you can create an immutable audit trail that can be used for debugging, compliance, and other purposes. Conclusion The combination of EventSourcing and CQRS can provide developers with significant benefits, such as increased flexibility, scalability and security. They offer a fresh approach to software development that can help developers create applications that are more in line with the needs of modern organisations. If you're interested in learning more about EventSourcing and CQRS, there are plenty of excellent resources available online. Conferences and talks like DDD Europe are also excellent opportunities to stay up-to-date on the latest trends and best practices in software development. Make sure not to miss out on these opportunities if you want to stay ahead of the game! The next edition of Domain-Driven Design Europe will take place in Amsterdam from the 5th to the 9th of June 2023. Did you know that ACA Group is one of the proud sponsors of DDD Europe? {% module_block module "widget_bc90125a-7f60-4a63-bddb-c60cc6f4ee41" %}{% module_attribute "buttons" is_json="true" %}{% raw %}[{"appearance":{"link_color":"light","primary_color":"primary","secondary_color":"primary","tertiary_color":"light","tertiary_icon_accent_color":"dark","tertiary_text_color":"dark","variant":"primary"},"content":{"arrow":"right","icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"tertiary_icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"text":"More about ACA Group"},"target":{"link":{"no_follow":false,"open_in_new_tab":false,"rel":"","sponsored":false,"url":{"content_id":null,"href":"https://acagroup.be/en/aca-as-a-company/","href_with_scheme":"https://acagroup.be/en/aca-as-a-company/","type":"EXTERNAL"},"user_generated_content":false}},"type":"normal"}]{% endraw %}{% end_module_attribute %}{% module_attribute "child_css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "definition_id" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "field_types" is_json="true" %}{% raw %}{"buttons":"group","styles":"group"}{% endraw %}{% end_module_attribute %}{% module_attribute "isJsModule" is_json="true" %}{% raw %}true{% endraw %}{% end_module_attribute %}{% module_attribute "label" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "module_id" is_json="true" %}{% raw %}201493994716{% endraw %}{% end_module_attribute %}{% module_attribute "path" is_json="true" %}{% raw %}"@projects/aca-group-project/aca-group-app/components/modules/ButtonGroup"{% endraw %}{% end_module_attribute %}{% module_attribute "schema_version" is_json="true" %}{% raw %}2{% endraw %}{% end_module_attribute %}{% module_attribute "smart_objects" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "smart_type" is_json="true" %}{% raw %}"NOT_SMART"{% endraw %}{% end_module_attribute %}{% module_attribute "tag" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "type" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "wrap_field_tag" is_json="true" %}{% raw %}"div"{% endraw %}{% end_module_attribute %}{% end_module_block %}

Read more
Reading time 3 min
8 MAY 2025

Y ou can’t design or develop something for all 7.9 billion people on the planet. So when we start a project, we decide on a target audience to narrow it down. From there we build our features and designs in a way that seems fitting for that audience. However, what we can’t narrow down on are the accessibility features. Everybody needs to have the possibility to use or experience your said creation. Some devices have built-in features like Google Talkback , where your device can tell you what’s happening on screen and even use that information with a digital braille reader. Or sometimes we make sure our platforms are accessible to use, such as our website, which by the way has a Google Lighthouse accessibility score of 98! But why stop there? Every piece of content should be accessible for everyone. This also counts for PDF files. Get started with these 3 tips we’ve gathered using a MediMarket Case Study : Do an accessibility check with Acrobat Pro First things first: do an accessibility check with Adobe Acrobat Pro. This check immediately indicates in a clear list which issues you need to face. Some of these issues can be solved directly in Acrobat Pro, and others require you to go back to your source file or check manually. You can gather a bit more knowledge by clicking the Autotag Document option. This will read the PDF and give you another accessibility summary about missing alt text, but more about this later. Realize the importance of the reading order Ever heard a screen reader freak out because it doesn’t understand your reading order or structure in the PDF file? Well, imagine someone talking way too fast, without stopping and without any clue what they want to say. Sounds chaotic, right? Now think about the users that really depend on these types of digital aids. Your PDF is basically useless when this happens. So be certain you have a structured document with the right identity headings, paragraphs and sections when creating the PDF. Want to add this to an existing PDF? With Acrobat Pro, you can read the reading order later thanks to their accessibility options. In this screenshot you can clearly see what the screen reader will read first, second, third and so on. Did you know Alt Text is also possible in PDF files? Is this the surprise of the day, or did you never bother to add an alternative text in your documents? Well, start by adding alt text on images or interactive fields. A screen reader can’t read your JPEG files and you need to explain what is shown to them. Don’t overdo it though, your user doesn’t really need to know you added that cute cat photo as filler. Don’t do this just with images. Audio and video elements are also in need of alt text. This isn’t only necessary for users with bad eyesight or hearing, but also for users with bad internet connection who only can download the text of your PDF. There is a lot more to this, but these 3 tips can certainly get you started! However, what I really wanted to achieve with this blogpost is that you start thinking about making all your content more accessible. Do you want more information about accessibility, for example in mobile applications? Go to our services and see for yourself what we can help you with!

Read more
teamwork
teamwork
Going Beyond Features: Maximize Outcomes, Minimize Outputs
Reading time 8 min
6 MAY 2025

When building products, there is a growing recognition that success isn’t just about delivering features or hitting deadlines. Instead, it’s about delivering real value to customers and achieving business impact. This requires a shift in mindset from output-driven to outcome-driven thinking. In this post, we'll explore why prioritizing outcomes over output is essential for building successful products, and how you can adopt this approach in your own work. What does “outcomes over output” mean? In the world of business, the terms outcome and output are often used interchangeably, causing a bit of confusion. However, it is important to have a clear understanding of the distinction between these two terms . Although they may seem straightforward, let's define them to ensure we are all on the same page. Let’s imagine you’ve been feeling exhausted lately, so you start working out in the gym to feel more energized. Some people might say that the outcome of your gym routine is the hours you’ve spent working out and the amount of weight you’ve lifted. But the real outcome of your routine is much more significant than that . The outcome is that you feel stronger, more confident, and healthier. The outcome is the way in which your hard work (the output) has translated into a better quality of life and a more positive self-image. The outcome is the way in which your problem was solved by the output. In a business context, an outcome refers to the impact your product has on the organization and its customers and stakeholders, while an output refers to the tangible things your (development) team produces, like documents, software, and tests. Focusing on outcome over output means defining success based on achieving a specific outcome and measuring progress based on how close you are to reaching that outcome. The goal of your team is not to produce outputs; it’s to reach a specific outcome. A successful team strives to maximize the desired outcome while minimizing the amount of work produced. The benefits of an outcome-driven approach 1. It helps you escape from the build trap The first Agile Principle states that your top priority is to make your customers happy by delivering valuable software as early and consistently as possible. As agile practices are adopted in various fields, people have rephrased this principle to emphasize the importance of delivering value to customers quickly and consistently. When you measure success based on an outcome-driven metric, like “ increasing newsletter click-through rates by 15% within six months ”, you immediately connect your team's efforts to the value for your organization and customers. This helps you understand the impact you're making and when you're truly making a difference. In contrast, when you measure success by looking only at the things you produce, such as “ the number of features delivered ” or “ the number of completed points in a scrum sprint ”, you risk running into what Melissa Perri (product management expert, speaker and author) refers to as “the build trap”. This trap involves focusing solely on creating features without considering the desired outcomes. When organizations prioritize output over outcomes, they risk getting caught in a cycle of building more and more features without truly understanding if they are solving customer problems or driving business value. By fixating on feature delivery as a measure of success, you may lose sight of the bigger picture. It doesn't tell you if you're building the right things. So, it is essential to shift your focus to the outcomes that matter. This requires a mindset shift that places the customer's needs and desired results at the forefront. By defining success based on outcomes, your team can escape from the build trap . 2. It helps you focus on learning and iterating When you start thinking critically about value delivery instead of feature delivery, you quickly run into the problem I’ve addressed previously: how can you be sure that the features you’re building are actually going to deliver value? An outcome-driven approach recognizes that you may not have all the answers from the start and that learning is an important part of the process. This is why, when working with outcomes, you need a companion tool: the experiment. When you combine outcome-driven thinking with a process that’s based on running experiments, you really start to unlock the true potential of agile approaches. This is especially valuable in situations where there is a lot of uncertainty. For example, when creating a new software product, you may not be sure if it will have the desired impact on your business or if all the fancy features you came up with are necessary. By focusing on outcomes, you can set goals that allow your team to experiment and try different solutions until they find what works best. In an agile context, we treat each step as a hypothesis and an experiment aimed at achieving a specific outcome. This is where the concept of an MVP, or Minimum Viable Product , comes in. Think of MVP as the smallest thing you can do or the smallest thing you can build to learn if your hypothesis is correct. This iterative process of testing, learning, and adapting allows teams to experiment, to try different solutions, until they hit on the one that works. 3. It helps your team reach more autonomy Employees often find it challenging to feel a profound sense of purpose and motivation solely from the output they produce. What truly drives individuals to show up at work each day is not the specific tasks they engage in day by day, but rather the meaningful outcomes their work will ultimately contribute to . An emphasis on outcomes helps align your team around a common purpose and shared goals. By providing clarity on what needs to be achieved, you can motivate and empower your team to work together towards clear goals that the product should achieve. This allows your team to prioritize their work, and build features that contribute to achieving those goals. Allowing them to make decisions about the features they build, will give a greater sense of ownership over the work they do. Defining the outcomes for your product and implementing them By now, you might agree that focusing on outcomes sounds like a good idea, but actually implementing them in our business practices is not as straightforward . Every methodology has its drawbacks. One challenge is that outcomes are less easily measured and quantified compared to outputs. Secondly, many companies face pressure to quickly move on to the next project once one is completed . Unfortunately, the iterative process of testing, learning, and adapting is still not commonly practiced. Finally, one thing that makes it hard is that we often set goals that are too high-level . For example, when you ask the team to make the business more profitable or reduce risk, it is too complex because those challenges consist of many variables to influence. These impact-level targets are too complex for teams. Instead, you should focus on smaller and more manageable targets . To do this, you need to ask your team to concentrate on changing customer behavior in ways that drive positive business outcomes. In his book “Outcomes Over Output: Why Customer Behavior Is The Key Metric For Business Success”, Joshua Seiden presents three magic questions that can help you identify suitable outcomes: What are the user and customer behaviors that drive business results? (This is the outcome that you’re trying to create.) How can we get people to do more of those behaviors? (These are the features, policy changes, etc that you’ll do to try to create the outcomes.) How do we know that we’re right? (This uncovers the experiments and metrics you’ll use to measure progress.) Let me provide you with an example of how this works. Imagine that you run an e-commerce clothing store, and you’re facing tough competition from a rival company. Your objective is to improve customer loyalty, so you set a broad goal to the team of increasing the frequency of customer visits from once a month to twice a month. To achieve this impact, you need to identify specific customer behaviors that correlate with visiting your site. For instance, you observe that customers tend to visit the site after opening the monthly newsletter showcasing new items. Therefore, one possible outcome could be to increase the newsletter click-through rates. Additionally, you notice that customers also visit the site after a friend shares an image of one of the items on social media. Hence, another outcome to consider is encouraging customers to share images of items more frequently. By focusing on these customer behaviors that drive the desired outcome of site visits, you ensure that your goals are both observable and measurable. This is crucial as it allows you to effectively manage and track progress. I hope this example highlights how outcomes can be specific and easily broken down. Remember, an outcome is a behavior exhibited by customers that directly influences business results. By understanding these behaviors, you can align your efforts with the outcomes that truly matter to your business. Takeaways An outcome refers to the impact your product has on the organization and its customers and stakeholders, while an output refers to the tangible things your team produces, like documents, software, and tests. The goal of your team is not to produce outputs; it’s to reach a specific outcome. A successful team strives to maximize the desired outcome while minimizing the amount of work produced. By fixating on feature delivery as a measure of success, you may lose sight of the bigger picture. It doesn't tell you if you're building the right things. So, it is essential to shift your focus to the outcomes. An outcome-driven approach recognizes that you may not have all the answers from the start and that learning is an important part of the process. This is why, when working with outcomes, you need a companion tool: the experiment. When you’re planning work, be clear about your assumptions. Be prepared to test your assumptions by expressing work as hypotheses. Test your hypotheses continuously by working in small iterations, experimenting, and responding to the data and feedback you collect. Don’t mistake impact—high-level aspirational goals—for outcomes. Impact is important, but these targets are too complex for teams as they consist of many variables to influence. Use these questions to define outcomes: what are the human behaviors that drive business results? How can we get people to do more of these things? How will we know we’re right? 👀 Want to know more about our services ? Click here to find out!

Read more
liferay azure
liferay azure
Customer case: setting up Azure B2C with Liferay integration
Reading time 4 min
6 MAY 2025

With the growing need for seamless user experiences and robust security measures, integrating advanced identity management solutions like Azure AD B2C with platforms such as Liferay has become essential. This article explores how ACA Group helped a company successfully implement Azure B2C to enhance their customer portal, ensuring a streamlined and secure experience for their users. From understanding the fundamentals of Azure B2C to tackling the challenges of integration, this case study provides valuable insights into the process and benefits of modern identity management solutions. What is Azure AD B2C? Azure AD B2C is a cloud-based identity provider designed for businesses to manage user identities securely and easily. It focuses on external users like customers, partners, and vendors, offering a scalable solution for login credentials and identity verification. Azure B2C aims to simplify user sign-up and registration processes while providing extensive customization options to tailor the user experience and integrate seamlessly with existing applications. Key features of Azure B2C Supports various identity providers, including Facebook, X, and LinkedIn. Provides a secure framework for managing personal data and ensures compliance with regulations. Manages access to multiple applications with a single account, enhancing security. Improves the overall user experience by recognizing the importance of digital identity in online interactions. Customer case: customer portal authentication Context This case involves a company managing air traffic within Belgian airspace, ensuring the safety, efficiency, and punctuality of flights. They oversee flight management, navigation, communication systems, and meteorological services, working closely with airlines, airports, and international air traffic control centers. Their customer portal serves as a centralized platform for clients to access vital information about operations and services, ensuring transparency and efficient communication. With hundreds of daily users, the portal plays a crucial role in maintaining efficient communication and customer satisfaction. Solution Approach We approached this case methodically and collaboratively. We started with a test design to outline our solution, making sure it matched the customer's needs. We then discussed it with the customer to gather their feedback. After considering their input, we went back to refine our approach. Realizing a tailored solution was necessary, we decided to implement custom policies. This iterative process allowed us to adapt and fine-tune our solution, ensuring it perfectly met the customer's expectations. Challenges Developed custom policies to fully integrate with Liferay, required detailed customization using XML files. The login process was tailored for SAML 2.0 authentication, customizing everything from personal details like names to preferences like language and business phone. Meeting the client's requirements was crucial, so certain fields were mandatory and others had specific formatting needs. Every step, from creating profiles to sending data to Liferay, was meticulously customized to match the project's goals. Although complex, this project was an exciting challenge that showcased our team's problem-solving skills and creativity. Lessons Learned Testing by non-technical users was a game-changer, helping us spot issues early on. Regular updates with the client kept everyone in the loop and allowed us to make timely modifications. By involving non-technical stakeholders and keeping communication open, we quickly addressed concerns and delivered a top-notch solution. This collaborative approach built trust and ensured everyone was on the same page, leading to a successful project outcome. Our Contributions to Azure B2C Working with Azure B2C showed us just how crucial custom policies are for a smooth system. These policies are the backbone of our SAML 2.0 integration, making identity management secure and efficient. We developed a custom B2C login portal to enhance user experience, tailored to fit the organization's needs. This portal simplifies registration and acts as a bridge, transferring user info to Liferay. After registration, user data flows into Liferay, automatically creating a user profile. This integration makes onboarding easy, allowing our customer affairs team to quickly assign account privileges. Creating profiles in both Azure B2C and Liferay keeps data consistent across platforms. Once profiles are created, we verify the accuracy and legitimacy of user information. After verification, users gain access to a secure and personalized customer portal on Liferay, providing a centralized and streamlined experience for all interactions. Optimizing User Journeys By integrating custom policies, SAML 2.0, Azure B2C, and Liferay, we created a smoother, more efficient user experience. This seamless connection automates tasks like user creation and verification, making registration hassle-free. The result? A faster process that saves time, reduces frustration, and boosts user engagement and satisfaction. Conclusion Integrating custom policies, SAML 2.0, Azure B2C, and Liferay creates a solid foundation for secure user sign-up and access management. These tools help organizations deliver personalized, trusted user experiences. Ready to optimize your user journeys? Reach out to our team at hello@acagroup.be . We’d love to help you get started!

Read more
Update Liferay
Update Liferay
Hi, Liferay DXP 7.2! What’s new with you?
Reading time 13 min
6 MAY 2025

ACA has been a Liferay Partner for many years, and is even the only Liferay Platinum Partner in Belgium. One of the advantages of this partnership is that we can view and review new products in a pre-release version. We recently received a pre-release version of the new Liferay DXP 7.2, which has just launched in early June. Here’s a short summary of what Liferay wants to achieve with this new version: In this new release Liferay aims to make it easier for the non-technical user to create a smooth customer experience . It realizes this by providing even more tools and updates to already existing tools. Another major upgrade is the fact that Audience Targeting is now included into the core of Liferay . By doing this, Audience Targeting and user segmentation has a better integration with all content building functionalities in Liferay. Liferay focuses on privacy with improvements to the Personal Data Erasure feature introduced in Liferay DXP 7.1. Modern Site Building There have been some vast improvements in the ways non-technical users can provide even better user experiences, something Liferay has been calling the Modern Site Building project since Liferay DXP 7.1. Its new features are related to Content Pages , Display Pages , Fragments , Navigation Menus and Pages Administration . Content Pages Next to an improved visual representation of the content pages, there are also several upgrades to the styling abilities for business users. Business users can now… adjust background colors, images, spacing, and more for sections in the Content Page. get an indicative view on the layout of a Content Page while creating them. Using the Section Builder on the right hand side, different kinds of layouts can be added to the Content Page. Several come out of the box, designed by Liferay itself, providing various amounts of columns. customize layouts on the fly and with regards to the specific context of a page. With the help of a bootstrap-like visual representation, the width of the columns can be easily adjusted by dragging the columns. It’s now also possible to provide a background color or even an image to the layout. adjust the number of columns, spacing, padding, margin and more thanks to the small options menu. To populate these layouts, Liferay provides several basic components called Fragments out of the box. These Fragments consist of several basic HTML components such as different kinds of headers, text fields, buttons, images, and cards (where some basic components are already grouped). There are also several predefined sections that combine layouts and components into more complex components, that are ready to be added to the page. Several types of headers, footers, banners, a highlight center and much more are provided! One thing that is very neat about all these components is that they can be linked to a Web Content Item. Any field of the content item can be used for the elements in the component. This allows the user to maintain the content in one place (the content management section of the site) and reuse it, or parts of it, in different content pages. Since Liferay DXP 7.1, business users were able to add widgets to Content Pages. A developer needed to create a Fragment that included the widget, which a business user could then configure. With the upgrade to Liferay DXP 7.2 however, business users are able to add any widget to any fragment directly, so they can make use of e.g. the asset publisher, web content display, alerts, wiki, blogs, … All of these updates are now performed within the context of the actual page. The styling and fixed components such as headers and footers and the behaviour of the Theme are directly applied to the Content Page. A business user can edit them while looking at it as end user, providing a more realistic experience of content editing. Display Pages All of the above changes for Content Pages are also valid for Display Pages, since they rely on the same building blocks. The major update here is the possibility for a developer to add support for Display Pages in custom entities. By ways of implementation, devs can provide the necessary options for webmasters to select specific Display Pages for the item. Webmasters will then see a dropdown option list to select which Display Page should be used. Fragments We have mentioned Fragments before as the building blocks to compose Content and Display Pages. They are typically created by a web developer and used by the webmaster. They are defined by an HTML block together with CSS and possibly JavaScript for dynamic behaviour. Liferay improved the Fragment Editor, which can be found in the Control Panel, to develop these Fragments. The Fragment Editor now also provides a form of code completion for the default lfr tag library. The Fragment can also be provided with a resource or a collection of resources that can be used in the Fragment. These are actually images that can be referenced by name either in the Fragment itself or in the supporting CSS (e.g. for the background image). The offline development for Fragments has also been made easier by Liferay through the Fragment Toolkit. This is a new npm tool to generate a Fragment module, which allows for offline development of a Fragment in an IDE of choice. The Fragment module can also be added to the codebase of the project and deployed on all environments. Navigation Menus Liferay DXP 7.1 introduced Navigation Menus to detach site navigation from the page hierarchy. Some improvements have been made in light of: moving pages in the hierarchy; selecting both public and private pages for the menu; adding back the ‘hidden’ option for pages to pages won’t be shown in any Navigation Menu; automatically adding a page to a Navigation Menu. Page Administration To easily navigate through pages while editing them, Liferay added the option to search and find Pages more easily through: a search bar in the page administration for search by text; the Page Navigation tool in the dockbar for Site administrators, which now provides a dropdown menu with search functionality; improvements in the visualizations of the page hierarchy and structure. Content Authoring While above updates concern the authoring of pages, there are also improvements to authoring content itself. One of these improvements now includes the possibility for webmasters to see an overview of the usages of the Content Item . These usages are determined by the Web Content Display and the Asset Publisher portlets as well as the usage in Fragments through Content Pages and Display Pages. So now, webmasters can clearly identify where in the Site any possible changes will impact the end user. Another improvement is that it is now easier for webmasters to preview the web content in all phases of the workflow and in different kind of contexts. Users can select different templates, see the preview of a Display Page Template and within a page the content item is already added. There have also been updates in terms of the content structure and templates. From Liferay DXP 7.2 and newer, it’s no longer required to select a template for a Content Item . As discussed above, Content Items can be used in Fragments for Content Pages and Display Pages. This means it’s possible that the Content Item is no longer represented by a template. Finally, the view for creating a structure and editing a Content Item has been updated . It now looks cleaner, with a clear separation between content and metadata. Audience Targeting With Liferay DXP 7.2, the Liferay core includes the Audience Targeting module. The Audience Targeting module allows for better and even more integration points with other core Liferay functionalities. Because of this change, a small migration process is necessary for current Audience Targeting customers . This should be a semi-automatic data migration process with preservation of existing segmentations. The Audience Targeting module itself has been moved outside of the Control Panel and can now be found under Site People Segments . Speaking of segments, it’s still possible to define segments based on rules. Rules can be created using User properties, Organization properties and Session properties. Much of this will sound familiar to the Audience Targeting customer. One nice adjustment, though, is that Custom Fields are now directly accessible from the menu. Customers using Liferay Analytics Cloud will also be happy to hear that from now on, the segments defined in Analytics Cloud can be reused in Liferay DXP . This means that segmentation in DXP can now be directly based on the user information or behavior and interests gathered in Liferay Analytics Cloud. Because of the integration of Audience Targeting into the Liferay core, the Liferay developers also provided several APIs to obtain information regarding user segmentation. This allows external applications that make use of Liferay content management capabilities to also apply user segmentation. Information that can be retrieved include the segments of a site, the segments to which a user belongs and even the users belonging to a segment. Personalized Experiences Using user segments in Content Pages is also available in terms of providing Personalized Experiences . When designing Content Pages, a webmaster can differentiate the sections and the content based on User Segments. Using the new Experience Administration option, these experiences can be created and managed through a simple UI. The order of the Personalized Experiences is important here as it signals priority. When a user belongs to multiple audiences and thus multiple experiences, the one with the highest priority (top-down) will be applied. Sadly though, this experience personalization is not applied to the Web Content Display portlet when present in the Content Page. This portlet will always show the same Content Item regardless of the selected experience. Content Sets Another novelty in light of Audience Targeting is the definition of Content Sets. This is a collection of Content Items that can be reused on the site pages using the Asset Publisher portlet . When creating a new Content Set, the content items that make part of it will be defined statically or dynamically by defining rules. You can differentiate those rules using user segments. Similar to the Personalized Experiences for Content Pages, Content Sets can contain different rules based on the user segments. In this context, they’re called Personalized Variations , but the functionality is pretty much the same. Although it is unclear if there is any priority applied here. These Content Sets are also available through the headless API, so they can be used outside of Liferay to obtain content variations based on the user segment. One oddity I came across when reviewing Audience Targeting, is that when User Segments are created, they are not available anymore for categorization of Content Items. In previous versions it was possible to use the User Segments as a sort of categorization for content items. Under ‘Metadata’, a new section called ‘User Segments’ would appear as soon as the user segments were defined. However, given the options of segmentation in Content Sets, Content Pages and Display Pages, Liferay probably has just omitted this usage of user segments. DMS Features Liferay’s Document Management capabilities have also gotten an upgrade. An integration with Google Docs is now available , so these types of documents can be created and edited within the Google context. The document is eventually stored in the Liferay DMS itself. You’ll need to create a Google Drive API for your project and provide that information in Liferay to start the integration with Google Docs. For all non-Google users, other significant updates have also been made to the ‘regular’ DMS features of Liferay, mainly concerning the sharing of files, file versioning and bulk editing. Sharing Files Documents and Media can now be shared with other users in the portal , even if they aren’t a member of the Site in which the item is defined. The receiving user won’t see anything of the Site in which the document is created. You can also grant them Comment or Update permissions instead of just a View permission. If you select the Allow the document to be shared with other users option, you’ll provide the receiving user the power to further share this document. The user that you share a Document with, is informed of this through the Notifications system of Liferay. You can locate any shared content from the User profile menu. No specific portlet to list all shared content is otherwise provided at this time. From a technical point of view it is important to know that no new document is created when sharing. Liferay chose to create a new table in the database which holds this sharing information between items and users. After sharing a document, it is also possible to revoke users’ access to it or manage the permissions from the information panel of the document under the Manage Collaborators link. File versioning Webmasters can now manually select a new version when editing a document . Under the tab Versioning , there’s a newly-added slider to activate the manual selection of versioning. The user can decide and provide a new major version or a new minor version, or can even select to have no version upgrade at all. For every selection, it is also possible to provide some comment to inform other users, or just for future reference, what adjustments have been made or why the selected option was chosen. When the activation slider is turned off, which is the default setting, Liferay applies its automatic versioning system. This system in turn has also received some updates and will now always play by the following rules: a major upgrade is created when the actual content has changed. a minor upgrade is created when the metadata has changed. there is no version upgrade in all other cases. e.g. only editing tags, categories, permissions or comments. Interesting to know is that this rule set can be extended as a Versioning Policy API has been introduced. By developing and deploying a custom component, the criteria can be adjusted. One still missing link for versioning is that these options are not available when editing with the image editor. Bulk editing The last major update in the Liferay DMS system is the availability to edit tags for documents in bulk . For now, editing tags is the only option, but Liferay promised to provide categorization as well in the near future. After selecting one or more Documents in the Documents Media Gallery, the Edit Tags options appears in the toolbar. This opens up a modal dialog where all options and shared tags are provided. By selecting Edit , webmasters manage only the listed tags, either deleting one or more or adding new ones for all selected documents. The Replace option will apply only the list of tags to all selected documents, which means all non-shared tags will be removed. This last one is very important to remember as it can cause some side effects where filters on tags will suddenly contain no more items. User Management We’ve already discussed Audience Targeting and some of its noticeable updates. However there have also been some improvements on individual user management. Mostly these are related to GDPR and user data management. In Liferay DXP 7.2, there are improvements in the feature to erase personal data and anonymize content . Personal data can also be exported and downloaded as a zip file that references the related assets. In the User Management section, these actions can still be found in the context menu. An Administrator is now presented with a clean dashboard to perform anonymization. The content can be scoped by the user’s personal site, regular site or instance. The content is shown in a hierarchical manner with filtering options. This provides the Administrator with context about the content items and where they are used. The Administrator can also selectively erase personal data. At the moment, only Documents Media and Message Boards support this new functionality. Exporting personal data is managed in the same way with a similar looking dashboard. When the export process is completed, an overview is shown of the different content items and are separately downloadable as a zip-file. In the process of auto-anonymization, the Administrator can now also see which applications contain data that support auto-anonymization. Extra: Artificial Intelligence Liferay also started embracing the power of AI. One example of this is the auto-tagging of images . This feature reduces the manual actions required by a webmaster and allows for rapid collection building. We’ll surely be seeing more AI functionalities in upcoming releases. The auto-tagging functionality is still at an early stage and therefore only English tags are supported. It is also disabled by default and needs to be activated by an Administrator from the Control Panel. This can however be performed on several levels: global, instance or site. Next to TensorFlow, which is the default provider, Liferay also supports Google CloudVision and Microsoft Cognitive Services. 🚀 Takeaway Liferay DXP 7.2 offers a ton of new possibilities. If you ask me, these are the things that really stand out in this new release: sharing documents; beautiful in-context editing of Content Pages; integration of Audience Targeting, with some caution as to how categorizing Content Items through Segments will happen in future releases; and linking Content Pages with Web Content Items. Are you just as excited about this new release as we are? Then why not join our fantastic team ? 🙂 Thanks for reading! Sources: https://community.liferay.com/blogs/-/blogs/web-experience-new-features-in-liferay-portal-7-2-b1 https://community.liferay.com/de/blogs/-/blogs/creating-personalized-experiences-with-liferay-7-2 https://community.liferay.com/de/blogs/-/blogs/liferay-portal-7-2-ce-alpha-1-release https://community.liferay.com/de/blogs/-/blogs/liferay-portal-7-2-ce-beta-1-release

Read more
aca award
aca award
Reading time 7 min
6 MAY 2025

The Global Accessibility Awareness Day takes place every year on the third Thursday of May with the aim of putting accessibility in the spotlight. For ACA Group, the accessibility, user-friendliness and inclusion of technology have long been an important focus. In this blog, you will discover some of our projects in which accessibility was high on the list of priorities. The intention of the Global Accessibility Awareness Day (GAAD) is to get as many people as possible to think and talk about how technology can be made accessible to people with a disability. In this way, the initiative wants to contribute to a more inclusive digital world. What is accessibility? Digital accessibility means that digital technologies, such as online tools, applications and electronic documents are designed in such a way that they are accessible to everyone, including people with disabilities. This allows them, like everyone else, to continue to participate in the digital economy and society. One of the most important aspects of accessibility is that people with visual, auditory, cognitive or physical disabilities can effectively perceive, understand, navigate and interact with digital content. ACA Group's vision on accessibility “Our sustainability policy is much more than our sponsorship of charities,” says Dorien Jorissen , Chief Digital Officer Sustainability Manager at ACA Group. “We strive to analyze and integrate all aspects of sustainability into our operations. Accessibility is also an integral part of our sustainability policy. ” The SDGs (Sustainable Development Goals) of the United Nations form the basis of the sustainability framework of ACA Group. “We want to propagate this not only in our offices, in our team and with our stakeholders, but also in our digital services and our project methodology ,” says Dorien. “In a rapidly evolving world, in which technology is becoming more and more intertwined with our daily lives, as a leading IT company we are obliged to keep digital accessibility high on the agenda.” Below, a picture of ACA Group winning the DataNews Award 2022 for Most Environmentally Responsible ICT Company of the Year'👇🏻 Accessibility in practice Below you will find three projects from ACA Group for which accessibility was an important design requirement. ⭐️ Mobile app for De Lijn with a focus on accessibility Accessibility is very important to De Lijn . Not only in terms of easy access to their vehicles, but also in terms of their digital applications, such as the mobile app. The challenge The transport company wants their app to be accessible and user-friendly for everyone, including people with a visual impairment. They often rely on public transport and must therefore be able to use the app easily. “In the past, people with a visual impairment could use a separate app that could better read out routes and real-time information,” says Joren Vos , Mobile Solution Engineer at ACA Group. “However, this app was outdated. In addition, De Lijn's general app also needed an update.” The solution So there was a need for an update of both the regular De Lijn app and the BLS app . That is why it was decided to integrate the BLS app and the general De Lijn app into one user-friendly app for everyone. “In the new design of the app, we focused on easy and user-friendly navigation,” explains Joren. “We replaced the old complex navigation structure with an easy-to-use navigation bar at the bottom of the screen. We also realized a clear context when reading from the screen, the support of larger text sizes and a voice-over." “We also improved the real-time information and added a congestion barometer. This allows a traveler to see how crowded it is on a particular bus or tram.” The result Thanks to the new menu structure, the updated De Lijn app makes it much easier for everyone to buy tickets, map out public transport routes and search for stops and destinations. Thanks to new functionality such as voice over, exit warning notifications and the support for larger font sizes, people with a visual impairment can also easily use the app. After an accessibility assessment by Eleven Ways and having obtained the required label, the De Lijn app can now officially call itself 'accessible'. ⭐️ ACA website according to Web Content Accessibility Guidelines In 2020 we wanted to give the ACA website a redesign. Stijn Schutyser , today UI/UX designer at ACA Website, was involved in the project as a copywriter and SEO Specialist at the time. He says: “We think it is important to involve our colleagues in every phase of such a project. That is why we sent an initial proposal internally during the preparation phase. One of the ACA colleagues suggested that we should pay extra attention to accessibility for people with a disability from the start. Since inclusion is an important focus of our sustainability policy, we immediately started working on this fantastic idea.” Web development according to international standard “We decided to develop the website according to the Web Content Accessibility Guidelines,” explains Stijn. “It was the first time we would develop a website according to this international standard. That made it quite a challenge for our technical team: studying the guidelines, checking how we could best implement them, the coding, …” “One of the most important targets was to make the website user-friendly for people who use a screen reader that reads the text on a website. For example, we have ensured that a screen reader jumps directly to the main content of a page at the touch of a button, without reading out the unnecessary content in the menu bar, etc..” Audit by Eleven Ways and AnySurfer “After the development and launch of the new website, we had it tested by Eleven Ways ,” says Stijn. “They gave us some work points that we had to tackle in order to comply with the guidelines. After these adjustments, we had the site audited by AnySurfer with the aim of receiving the AnySurfer label level AA. That label proves that your website has been tested by AnySurfer and that it meets the WCAG standard to speak of an accessible website.” By the way, did you know that the ACA website has a Lighthouse accessibility score of 98, an almost perfect score. Accessibility will continue to be an important design parameter for our website in the future. ⭐️ How we improve the accessibility of PDF files Accessibility is not only important for websites and apps. “Every piece of content should be accessible to everyone, including PDF files,” says Ibn Renders , Lead Branding at ACA Group. “That is why at ACA Group we ensure that our PDF files are adapted for people with a visual impairment who use a screen reader.” Below, Ibn gives three tips to make PDF files accessible to everyone: Accessibility check: To improve the accessibility of our PDF documents, we use the 'accessibility check' feature of Acrobat Pro. This tool checks your document and indicates which things you should adjust. Reading order: It is important to structure your PDF file with the correct headings and paragraphs. If you don't, your document will become one big chaos for people with a screen reader. With Acrobat Pro, the accessibility options make it easy to determine the desired reading order. Alt text: Screen readers don't know what's on an image, audio, or video element. Fortunately, you can help them by adding an alt text with a short description of the relevant audiovisual element. Want to know more about accessibility for PDF files? Read the blog article “3 easy tips to make your PDF files accessible to everyone” . Conclusion In an increasingly digital world, we need to ensure that everyone, including people with disabilities, continues to have access to online and offline digital solutions and content. As a leading IT company, we want to take our responsibility with ACA Group to integrate accessibility into our services, our methodology and our solutions. We are already making a lot of efforts to achieve this, but it remains a continuous effort to do even better. Looking for an IT partner who really understands you? {% module_block module "widget_721f158c-b460-4017-9a15-8780ca97dc15" %}{% module_attribute "buttons" is_json="true" %}{% raw %}[{"appearance":{"link_color":"light","primary_color":"primary","secondary_color":"primary","tertiary_color":"light","tertiary_icon_accent_color":"dark","tertiary_text_color":"dark","variant":"primary"},"content":{"arrow":"right","icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"tertiary_icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"text":"Let's talk"},"target":{"link":{"no_follow":false,"open_in_new_tab":false,"rel":"","sponsored":false,"url":{"content_id":230950468795,"href":"https://25145356.hs-sites-eu1.com/en/contact","href_with_scheme":null,"type":"CONTENT"},"user_generated_content":false}},"type":"normal"}]{% endraw %}{% end_module_attribute %}{% module_attribute "child_css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "definition_id" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "field_types" is_json="true" %}{% raw %}{"buttons":"group","styles":"group"}{% endraw %}{% end_module_attribute %}{% module_attribute "isJsModule" is_json="true" %}{% raw %}true{% endraw %}{% end_module_attribute %}{% module_attribute "label" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "module_id" is_json="true" %}{% raw %}201493994716{% endraw %}{% end_module_attribute %}{% module_attribute "path" is_json="true" %}{% raw %}"@projects/aca-group-project/aca-group-app/components/modules/ButtonGroup"{% endraw %}{% end_module_attribute %}{% module_attribute "schema_version" is_json="true" %}{% raw %}2{% endraw %}{% end_module_attribute %}{% module_attribute "smart_objects" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "smart_type" is_json="true" %}{% raw %}"NOT_SMART"{% endraw %}{% end_module_attribute %}{% module_attribute "tag" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "type" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "wrap_field_tag" is_json="true" %}{% raw %}"div"{% endraw %}{% end_module_attribute %}{% end_module_block %}

Read more
ulrich ACA Group
ulrich ACA Group
Reading time 4 min
6 MAY 2025

For more than twenty years, ACA Group has been known for it’s strong project methodology. After the last few years of exponential growth, it was necessary to critically review and align our joint project approach. If only to refocus on one uniform methodology that all teams apply for their projects. After all, we want to continue to guarantee the well-known ACA quality in the future. To achieve one aligned methodology across all ACA business units and teams, a chapter * of project managers and analysts was established to streamline, focus and challenge the updated methodology. Ulrich Bervoets , leader of the ACA chapters, tells all about it in this article. Why is a project methodology so important to ACA Group? “Our project methodology offers a structured approach to project execution. It not only allows us to set clear objectives and define the scope of the project, but also to predict when the project will be ready and how much it will cost. Providing open communication channels allows us to work effectively with our customers. Our methodology also includes risk management, quality assurance and regular reporting, resulting in a higher success rate and satisfaction for our clients. In short, our project methodology ensures that projects are completed on time, within budget and to satisfaction.” ACA Group has been working according to an Agile-based methodology for more than twenty years, being one of the pioneers. Why was an update needed? “In recent years, ACA Group has grown strongly. Many new colleagues and new business units have joined us in a short period of time. Although each department originally started from the same methodology, in order to respond to the needs of the customer, differences have gradually emerged in the way projects are approached. With our renewed methodology we want to work organization-wide with a uniform approach. This way we can continue to offer our well-known ACA quality in the future. A customer who works with different ACA departments benefits from each project being approached in the same way. It ensures maximum predictability, transparency and trust.” Does this uniform project methodology also benefit ACA Group and its employees? "Certainly! It promotes cooperation between different departments. If every business unit works the same way, it's much easier to bring in analysts and project managers for different projects across different business units. Such a uniform project approach is also very easy for our team leads and managers. When everyone uses the same tools and principles, internal communication and information exchange becomes a lot easier. Moreover, our methodology is not only efficient and innovative, but also fun. Thanks to our chapter work, all our analysts and project managers meet regularly to share knowledge and challenge each other. It helps our colleagues to continuously grow in their role. We notice that our unique way of working is very attractive to analysts and project managers who want to come and work for us. So it also has its advantages in terms of employer branding.” How do you want to ensure that every ACA employee knows and consistently applies the new methodology, also in the long term? “First and foremost, we will immerse new colleagues in our methodology from onboarding through different learning paths. In addition, we want to build general awareness about our techniques and project approach. Through interactive knowledge sharing and inspiration sessions, where fun and learning is combined, we want to inform colleagues and support them in their development as ACA methodology ambassadors. At this moment we want to support the various business units and teams as much as possible in the start-up of a new project and coach them purposefully during the project. In addition, we want to motivate our team leads to support and monitor this process for his/her own team. We notice in our current projects that our methodology is paying off, but we want to continue to improve it in the future." * About the ACA chapters : The chapters serve the purpose of connecting ACA employees who share similar roles and responsibilities across various business units and locations. Their primary objective is to establish a consistent approach to work. By doing so, they facilitate knowledge exchange, fostering mutual growth and collaboration. Moreover, these chapters bring clarity to customers who engage with multiple business units, as they can expect a standardized working methodology. Presently, ACA has established chapters for project managers, analysts, and support staff. Want to know more about the ACA methodology? {% module_block module "widget_e6f1bc5e-ecdc-42fd-b274-0ae73b961a78" %}{% module_attribute "buttons" is_json="true" %}{% raw %}[{"appearance":{"link_color":"light","primary_color":"primary","secondary_color":"primary","tertiary_color":"light","tertiary_icon_accent_color":"dark","tertiary_text_color":"dark","variant":"primary"},"content":{"arrow":"right","icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"tertiary_icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"text":"Discover our Methodology here"},"target":{"link":{"no_follow":false,"open_in_new_tab":false,"rel":"","sponsored":false,"url":{"content_id":null,"href":"","href_with_scheme":"","type":"CONTENT"},"user_generated_content":false}},"type":"normal"}]{% endraw %}{% end_module_attribute %}{% module_attribute "child_css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "definition_id" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "field_types" is_json="true" %}{% raw %}{"buttons":"group","styles":"group"}{% endraw %}{% end_module_attribute %}{% module_attribute "isJsModule" is_json="true" %}{% raw %}true{% endraw %}{% end_module_attribute %}{% module_attribute "label" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "module_id" is_json="true" %}{% raw %}201493994716{% endraw %}{% end_module_attribute %}{% module_attribute "path" is_json="true" %}{% raw %}"@projects/aca-group-project/aca-group-app/components/modules/ButtonGroup"{% endraw %}{% end_module_attribute %}{% module_attribute "schema_version" is_json="true" %}{% raw %}2{% endraw %}{% end_module_attribute %}{% module_attribute "smart_objects" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "smart_type" is_json="true" %}{% raw %}"NOT_SMART"{% endraw %}{% end_module_attribute %}{% module_attribute "tag" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "type" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "wrap_field_tag" is_json="true" %}{% raw %}"div"{% endraw %}{% end_module_attribute %}{% end_module_block %}

Read more
drupal logo
drupal logo
Reading time 4 min
6 MAY 2025

Drupal, a powerful and popular Content Management System (CMS), has been a mainstay for countless websites for over a decade. However, a significant milestone is fast approaching for Drupal 7 users: the impending end-of-life (EOL) on January 5th 2025. This means that Drupal 7 will no longer receive official support or updates from the Drupal community, leaving website owners and developers with a critical decision to make. In this comprehensive blog post, we'll explore the implications of Drupal 7's EOL, the risks of staying on an unsupported platform, and the options available to ensure your website remains secure, functional, and future-proof. What does Drupal 7 end-of-life mean? In the software world, "end-of-life" signifies that a software version will no longer be actively maintained. For Drupal 7, this has several crucial implications: No more security updates: Security vulnerabilities are a constant threat online. Without ongoing security updates, your Drupal 7 website becomes increasingly susceptible to hacks and data breaches. This can have serious consequences, including financial losses, reputational damage, and even legal issues if sensitive data is compromised. Bug fixes left unresolved : Existing bugs and glitches within Drupal 7 will no longer be addressed. This can lead to website malfunctions, compatibility issues with plugins, and a frustrating user experience for both administrators and website visitors. Limited support : The Drupal community will no longer provide official technical assistance for Drupal 7. If you encounter technical problems after EOL, you'll be on your own to find solutions. Risks of staying on Drupal 7 after EOL Continuing to use Drupal 7 after the end-of-life date comes with significant risks that website owners must consider: Increased security threats : Without security updates, your website becomes a prime target for hackers. A successful attack can result in stolen data, disrupted operations, and a loss of trust from your website visitors. Limited functionality: As technology evolves, it will become increasingly difficult to integrate Drupal 7 with newer technologies and plugins. This can limit your website's functionality and hinder your ability to adapt to changing online trends. Compliance issues : When Drupal 7 reaches its end-of-life (EOL), continuing to use it poses significant compliance risks, particularly under GDPR. Businesses handling sensitive data must ensure their CMS is regularly updated and secure to avoid breaches. An unsupported CMS like Drupal 7 fails to meet GDPR requirements, risking hefty fines and penalties. What are your options after Drupal 7 EOL? With the Drupal 7 end-of life fast approaching, it's crucial to consider your options to ensure the long-term success and security of your website: Upgrade to a newer version of drupal : Drupal offers more recent versions with enhanced functionality, improved security, and ongoing support. However, upgrading can be a complex process depending on the complexity of your website. Migrate to a different CMS : Several robust CMS platforms, such as Liferay DXP, offer modern features and strong security practices. Exploring these alternatives can provide a fresh start and unlock new possibilities for your website. Continue using Drupal 7 (not recommended) : While technically possible, this is the least recommended option due to the significant security risks and limitations discussed above. Take action today to secure your Drupal 7 website’s future The upcoming Drupal 7 EOL presents a critical decision point for website owners. We encourage you to learn more about your migration options and take proactive steps to secure your website's future. In our next blog post, we'll explore the benefits of migrating from Drupal 7 to Liferay DXP, a powerful and secure CMS platform that can seamlessly take your website to the next level. In the meantime, you can schedule a call for a free migration consultation with our team of experts. Don't wait until it's too late! Take action now to ensure your website remains secure, functional, and competitive after Drupal 7 end-of-life. Do you want to navigate the Drupal 7 EOL transition smoothly? {% module_block module "widget_a92bc401-d6ad-4b8d-ab07-af5c75b79f92" %}{% module_attribute "buttons" is_json="true" %}{% raw %}[{"appearance":{"link_color":"light","primary_color":"primary","secondary_color":"primary","tertiary_color":"light","tertiary_icon_accent_color":"dark","tertiary_text_color":"dark","variant":"primary"},"content":{"arrow":"right","icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"tertiary_icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"text":"Contact our experts now"},"target":{"link":{"no_follow":false,"open_in_new_tab":false,"rel":"","sponsored":false,"url":{"content_id":null,"href":"","href_with_scheme":"","type":"CONTENT"},"user_generated_content":false}},"type":"normal"}]{% endraw %}{% end_module_attribute %}{% module_attribute "child_css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "definition_id" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "field_types" is_json="true" %}{% raw %}{"buttons":"group","styles":"group"}{% endraw %}{% end_module_attribute %}{% module_attribute "isJsModule" is_json="true" %}{% raw %}true{% endraw %}{% end_module_attribute %}{% module_attribute "label" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "module_id" is_json="true" %}{% raw %}201493994716{% endraw %}{% end_module_attribute %}{% module_attribute "path" is_json="true" %}{% raw %}"@projects/aca-group-project/aca-group-app/components/modules/ButtonGroup"{% endraw %}{% end_module_attribute %}{% module_attribute "schema_version" is_json="true" %}{% raw %}2{% endraw %}{% end_module_attribute %}{% module_attribute "smart_objects" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "smart_type" is_json="true" %}{% raw %}"NOT_SMART"{% endraw %}{% end_module_attribute %}{% module_attribute "tag" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "type" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "wrap_field_tag" is_json="true" %}{% raw %}"div"{% endraw %}{% end_module_attribute %}{% end_module_block %}

Read more
liferay password
liferay password
Recovering an admin password in Liferay
Reading time 3 min
6 MAY 2025

The awkward moment when your login credentials do not work when you quickly need to make some changes, the embarrassment of not remembering the only administrator login when your colleague needs them. Your administrator credentials are lost . It has probably happened to quite a few of us. This can be very problematic when dealing with the credentials of the default administrator account in Liferay . This account, also known as test@liferay.com is often used on test and development Liferay installations. Losing the credentials for this account usually means losing all control over Liferay on these installations. "You should have documented these credentials somewhere!" (Random developer) Should have, could have… but didn’t. It is indeed true that maintaining complete and correct documentation can prevent these kind of situations . Having a project wiki helps tremendously in managing all the important information that needs to be shared. However, I am not writing this blog post to divulge all pro’s and con’s of a wiki to you. Our password is lost and we want it back, right now! Don’t panic. Besides of trying to get a hold of someone who does know the password or even installing a new Liferay, there are 2 fairly simple and straightforward methods to regain control over your account. Both however, depend on having access to Liferay’s database, so hopefully you are at least still able to log in to the database. The first method is to use Liferay’s built-in passwordEncrypted flag : Go to the user_ table in the database. Find the user you want to gain access to. Set the password_ field to some plain text password. Set the passwordEncrypted field to 0. Set the passwordReset field to 1. Restart Liferay! Log in. This will allow you to log in once with your own set password. Liferay will ask you to set a new password and that’s all. You have succesfully regained control! Your password will automatically become encrypted again in the database, so no need to worry about that. The second method is a bit more crude and relies on having a second Liferay instance at hand, but it works just as well: Go to the user_ table from the second instance, and copy the encrypted password of a user you know the password of. Paste this password into the problematic user’s password_ field of the user_ table from the initial Liferay instance. Restart Liferay! Log in. And again, great success! This method could be useful when there’s unauthorized eyes spying on you. Never will a password be visible in plain text. Got some Liferay troubles? As the only Platinum Partner in the Benelux, we're ready to help you out! {% module_block module "widget_cf1d144d-8279-481c-9ccd-60a9faf0cc03" %}{% module_attribute "buttons" is_json="true" %}{% raw %}[{"appearance":{"link_color":"light","primary_color":"primary","secondary_color":"primary","tertiary_color":"light","tertiary_icon_accent_color":"dark","tertiary_text_color":"dark","variant":"primary"},"content":{"arrow":"right","icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"tertiary_icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"text":"Our Liferay services"},"target":{"link":{"no_follow":false,"open_in_new_tab":false,"rel":"","sponsored":false,"url":null,"user_generated_content":false}},"type":"normal"}]{% endraw %}{% end_module_attribute %}{% module_attribute "child_css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "definition_id" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "field_types" is_json="true" %}{% raw %}{"buttons":"group","styles":"group"}{% endraw %}{% end_module_attribute %}{% module_attribute "isJsModule" is_json="true" %}{% raw %}true{% endraw %}{% end_module_attribute %}{% module_attribute "label" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "module_id" is_json="true" %}{% raw %}201493994716{% endraw %}{% end_module_attribute %}{% module_attribute "path" is_json="true" %}{% raw %}"@projects/aca-group-project/aca-group-app/components/modules/ButtonGroup"{% endraw %}{% end_module_attribute %}{% module_attribute "schema_version" is_json="true" %}{% raw %}2{% endraw %}{% end_module_attribute %}{% module_attribute "smart_objects" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "smart_type" is_json="true" %}{% raw %}"NOT_SMART"{% endraw %}{% end_module_attribute %}{% module_attribute "tag" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "type" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "wrap_field_tag" is_json="true" %}{% raw %}"div"{% endraw %}{% end_module_attribute %}{% end_module_block %}

Read more
application laptop
application laptop
Why does my application not always work the same way?
Reading time 4 min
6 MAY 2025

Some differences: the labels Shop and Shop/Upgrade are not consistent, the blurred labels stand in a different place, like "Support" and "Account", "TV", "labels" and "Sign in" are sometimes labels and sometimes icons, the search function is missing in the top header, only the first header had a menu hamburger. You may recognize this situation: as your application grows, the diversity of elements grows with it. Buttons on different pages are slightly different or not exactly in the same place, icons don't all belong to the same set, newer forms don't follow the same structure as previous ones, there are different fonts or sizes for the same purpose, and so on. That's annoying and downright messy. It is worse when this inconsistency ensures that your application no longer works as expected according to your users because there is also too little consistency in the interaction patterns. This can lead to users using your application or part of it less and less or even stop working with it. The importance of consistency “Consistency” is an important metric that most companies underestimate. Consistency is a crucial part of any company with a digital platform or service. It not only ensures a user-friendly product, but also numerous other benefits including: a unified experience across different devices, correct implementation of branding, brand awareness and much more… We all recognize the importance of that consistency, but how can you ensure for now that you also guarantee this within your organization? What is a 'design system'? A design system is a central place where all components of a digital product or set of digital products are described . You can think of it as a kind of library in which different visual components are stored for use in your website, app or social media content. Color and typography are primary components in a design system, just like buttons, forms, footers, and other components. Design system 'Atomus' , available for free design system within Figma The advantages of a design system The use of a design system has 3 big advantages: it creates more cohesion and consistency, iensures a high degree of reusability, and is very easy to use. A design system helps to create a consistent brand image. Once you create a design system, it becomes the "single source of truth" for your visual identity. Everyone will be able to create designs that look and feel the same and work according to the same interaction patterns. High degree of reusability Your team can quickly design new components based on existing smaller elements called atoms . So you can always reuse your current atoms to create new things that immediately fit within the design and look feel of your design system. Quick and easy to use Existing or new colleagues who have less experience with UX or UI design can help create modern, user-friendly and beautiful interfaces. This speeds up your developers' work and increases your efficiency! In addition, this efficiency also offers another advantage, namely that changes in your product or service can be implemented very quickly. This means that you can realize a much faster time-to-market . Do you recognize one or more of these challenges? Do your applications sometimes suffer from inconsistent operation or visual display and are you curious about how you can remedy this with a design system? Or do you have questions about exactly how you can set up a design system to ensure that you do not run into problems in terms of consistency? Then book a free and non-binding slot in our agenda for a Q A session below. During this meeting we are happy to listen to your questions and give you specific advice. {% module_block module "widget_4ef2ded0-7241-4df2-939c-0070891b3837" %}{% module_attribute "buttons" is_json="true" %}{% raw %}[{"appearance":{"link_color":"light","primary_color":"primary","secondary_color":"primary","tertiary_color":"light","tertiary_icon_accent_color":"dark","tertiary_text_color":"dark","variant":"primary"},"content":{"arrow":"right","icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"tertiary_icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"text":"Book Q A session with an expert"},"target":{"link":{"no_follow":false,"open_in_new_tab":true,"rel":"noopener","sponsored":false,"url":{"content_id":null,"href":"https://calendly.com/q-and-a-session/boek-een-q-a-sessie-met-onze-expert-clone?month=2022-11","href_with_scheme":"https://calendly.com/q-and-a-session/boek-een-q-a-sessie-met-onze-expert-clone?month=2022-11","type":"EXTERNAL"},"user_generated_content":false}},"type":"normal"}]{% endraw %}{% end_module_attribute %}{% module_attribute "child_css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "definition_id" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "field_types" is_json="true" %}{% raw %}{"buttons":"group","styles":"group"}{% endraw %}{% end_module_attribute %}{% module_attribute "isJsModule" is_json="true" %}{% raw %}true{% endraw %}{% end_module_attribute %}{% module_attribute "label" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "module_id" is_json="true" %}{% raw %}201493994716{% endraw %}{% end_module_attribute %}{% module_attribute "path" is_json="true" %}{% raw %}"@projects/aca-group-project/aca-group-app/components/modules/ButtonGroup"{% endraw %}{% end_module_attribute %}{% module_attribute "schema_version" is_json="true" %}{% raw %}2{% endraw %}{% end_module_attribute %}{% module_attribute "smart_objects" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "smart_type" is_json="true" %}{% raw %}"NOT_SMART"{% endraw %}{% end_module_attribute %}{% module_attribute "tag" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "type" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "wrap_field_tag" is_json="true" %}{% raw %}"div"{% endraw %}{% end_module_attribute %}{% end_module_block %}

Read more
azure lighthouse
azure lighthouse
Azure Lighthouse: What, how and why?
Reading time 5 min
6 MAY 2025

Anyone who has had to manage multiple Azure accounts in the past knows that it is often a hassle. For example, you have to log in to each Azure tenant separately with the correct login details. There is no question of a central management and setting up individual environments manually is very difficult. Implementing consistent access control and security policies is also nearly impossible. Fortunately, there is a solution: Azure Lighthouse. Find out all about it in this blog. DevOps or system engineers regularly have to work on different Azure tenants and that does not always run smoothly. Some customers want you to use a login from them, other customers prefer to invite you as a guest to manage their environment. The result is that you often have to switch manually between different Azure tenants. Moreover, it is sometimes necessary to search for the correct login details, which means that valuable time is lost. Fortunately, now there is Azure Lighthouse with which you can manage the resources within a subscription in an easy and clear way. What is Azure Lighthouse? Azure Lighthouse is a Microsoft Azure management service that provides a central platform for managing and monitoring multiple customer environments (tenants) and their resources. It enables service providers or companies with multiple Azure subscriptions to efficiently manage and control the Azure environments of their customers or subsidiaries. This allows them to streamline operational processes, improve security, and increase overall efficiency by providing a consistent management experience across all managed tenants. Benefits of Azure Lighthouse ✅ Management of multiple tenants As a service provider, you can view and manage multiple Azure subscriptions or tenants from a single Azure portal or API endpoint. You can also perform various management tasks, such as deploying and managing resources, applying policies, and monitoring performance, across all managed tenants. ✅ Delegates acces With Azure Lighthouse, you can grant delegated access to customers or subsidiaries so that they can manage their own Azure resources within defined boundaries. This delegation is based on Azure Role-Based Access Control (RBAC), which provides fine control over privileges and segregation of duties. ✅ Secure multi-tenant environment Built-in security controls keep each tenant's data and resources isolated and protected. It provides granular access controls, secure multi-factor authentication (MFA), and the ability to apply Azure Policy and Azure Security Center to all managed tenants. ✅ Branding for service providers Azure Lighthouse allows customizing the Azure portal experience for customers by applying custom branding elements such as logos and themes. This helps maintain a consistent brand identity and improves the overall customer experience. ✅ Integration with Azure Marketplace As a service provider, you can publish your managed services or solutions on the Azure Marketplace. This allows customers to easily discover and subscribe to these services, further simplifying the relationship between service provider and customer. How exactly does Azure Lighthouse work? The Azure accesses are set up per subscription. As a service provider, it is your job to publish an Azure Resource Manager (ARM) template. Templates published via the Azure store can be read by anyone. Would you rather manage just a few customers, or manage a specific customer base? Then there is the option to have the resource templates imported directly to the customer. This is how you do it: Search your tenant for Azure Lighthouse. Choose View Service Providers . Select View Service Provider Offers . Read in the new service offer from here. Such a resource template contains all kinds of information such as tenant ID of the customer and of the service provider, offer name, description and which role you want to give to the service provider. Why is Azure Lighthouse interesting for you? Thanks to Azure Lighthouse, you have less hassle with customer-specific accounts or external invites. Access management is done entirely through your own portal as a service provider. As a result, you no longer have to bother the customer's local IT for access or to send invitations. Everything is centrally arranged. When new colleagues arrive or leave, you can easily remove their accounts from the relevant Azure Active Directory groups, which automatically synchronizes their access to the customer environment. In addition, the customer retains full control over their subscriptions and can unlink the service provider of certain licenses at any time. All the extra hassle that used to be necessary is now gone thanks to Azure Lighthouse. The whole process runs smooth and efficient. Conclusion Azure Lighthouse simplifies the management and governance of multiple Azure environments, giving service providers central control, saving them significant management time. In addition, customers can efficiently manage their resources while benefiting from the expertise and services offered by their providers. The increased security is also an extra asset. For more information, visit the official Microsoft FAQ pages and the official Azure Lighthouse product page . Questions about Azure Lighthouse? {% module_block module "widget_3fabed10-ae39-4bfa-8d68-e13814ecdf36" %}{% module_attribute "buttons" is_json="true" %}{% raw %}[{"appearance":{"link_color":"light","primary_color":"primary","secondary_color":"primary","tertiary_color":"light","tertiary_icon_accent_color":"dark","tertiary_text_color":"dark","variant":"primary"},"content":{"arrow":"right","icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"tertiary_icon":{"alt":null,"height":null,"loading":"disabled","size_type":null,"src":"","width":null},"text":"Contact our experts"},"target":{"link":{"no_follow":false,"open_in_new_tab":false,"rel":"","sponsored":false,"url":{"content_id":230950468795,"href":"https://25145356.hs-sites-eu1.com/en/contact","href_with_scheme":null,"type":"CONTENT"},"user_generated_content":false}},"type":"normal"}]{% endraw %}{% end_module_attribute %}{% module_attribute "child_css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "css" is_json="true" %}{% raw %}{}{% endraw %}{% end_module_attribute %}{% module_attribute "definition_id" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "field_types" is_json="true" %}{% raw %}{"buttons":"group","styles":"group"}{% endraw %}{% end_module_attribute %}{% module_attribute "isJsModule" is_json="true" %}{% raw %}true{% endraw %}{% end_module_attribute %}{% module_attribute "label" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "module_id" is_json="true" %}{% raw %}201493994716{% endraw %}{% end_module_attribute %}{% module_attribute "path" is_json="true" %}{% raw %}"@projects/aca-group-project/aca-group-app/components/modules/ButtonGroup"{% endraw %}{% end_module_attribute %}{% module_attribute "schema_version" is_json="true" %}{% raw %}2{% endraw %}{% end_module_attribute %}{% module_attribute "smart_objects" is_json="true" %}{% raw %}null{% endraw %}{% end_module_attribute %}{% module_attribute "smart_type" is_json="true" %}{% raw %}"NOT_SMART"{% endraw %}{% end_module_attribute %}{% module_attribute "tag" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "type" is_json="true" %}{% raw %}"module"{% endraw %}{% end_module_attribute %}{% module_attribute "wrap_field_tag" is_json="true" %}{% raw %}"div"{% endraw %}{% end_module_attribute %}{% end_module_block %}

Read more