Welcome to the codeflair blog!

Here, you can find interesting bits and pieces we find in our work and about codeflair itself.


Cebit 2018

Kiril Delovski

CeBIT is the largest and most internationally representative computer expo. The trade fair is held each year on the Hanover fairground, the world’s largest fairground, in Hanover, Germany. It is considered a barometer of current trends and a measure of the state of the art in information technology. From the time of visit there was lot to be seen like big companies oriented for B2B, companies like IBM, Volkswagen, Huawei and much more. The most interesting part to be seen was in the hall 27 where were presented a lot of VR’s and worth to mention the VR football table, also a lot of other AR’s, smart drones and robots. There was a hall for startup companies, and jobs & carrier opportunities. Deutsch Vodafone had their vision and show for the upcoming 5G network and most interesting for seeing was a hoist truck to move a container via remote control by using 5G network in real time with live camera coverage. There was also very thrilling to be seen an autonomous electric bus, robotic car and first electric drone taxi from intel for people transportation. Besides things to be seen there were a lot of topics for discussion, lecture, talk, keynote for IOT, Blockchain, Artificial intelligence, Quantum computing, The future of software, AR and VR what is ahead, Future of robotics and more.

The following article is taken from Cebit website as press report which is worth reading as a total summarize from the Cebit exhibition.

This year at CEBIT 2018, everything was geared to generating business, leads and bright ideas. The starting dates were moved a bit later starting from 11th-15th of June 2018 than before when was held on March. As a triple-punch event featuring exhibits, conferences and networking, CEBIT covers the digitization of business, government and society from every angle.
It was based into four sections – d!conomy, d!tec, d!talk and d!campus.

  • The innovations on display in the d!conomy section of the show give IT professionals and decision-makers, trade and the public sector the tools they need to streamline and futureproof their operations.
  • The event’s d!tec showcase puts the spotlight on developers and startups.
  • The d!talk conference program features visionaries, lateral thinkers, creatives and experts.
  • The d!campus is heart of CEBIT – relaxed networking, street food and live music.

1) The Cebit fair duration was for 5 days:

The first day of CEBIT 2018 – Monday, 11 June was held in Convention center just for Conference attendees and journalists, and starting topics as introduction and welcoming but with no exhibitions.

2) From 2nd until 5th day exhibition halls were opened and most popular topics were presented:


Artificial intelligence

Self-learning systems were a beacon theme at this year’s CEBIT. Hewlett Packard Enterprise demonstrated how computers will soon be able to compare millions of disease symptoms from a multitude of different sources in order to identify the ideal medication for a particular patient. At the IBM stand, visitors were introduced to a smart assistant, equipped with voice control, cameras and sensors, that is supporting the German astronaut Alexander Gerst during his mission on the ISS space station. AI technologies are also delivering real benefits in the digital workspace: assistants like Alexa or chatbots respond to human voice instructions to simplify the operation of many new software tools. Numerous exhibitors were also presenting solutions with 360-degree output for complete processes. One of the key topics in this context was data security. Given that many dangerous attacks originate from employee workstations, several exhibitors presented automated security concepts.



Artificial intelligence looks even more impressive when manifested in quasi-human form. The humanoid robot “Pepper” from SoftBank Robotics reacts to human feelings and answers questions on products and services. At the interface between research and industry, research institutions were also present at CEBIT to showcase their latest innovations. The Karlsruhe Institute for Technology (KIT) presented its “ARMAR-6” robot, which assists its human colleagues in operating power drills and is also capable of learning how to use new tools through simple observation. The efficient and reliable collaboration between humans and robots in an Industry 4.0 production setting was the subject of an exhibit by the German Research Center for Artificial Intelligence (DFKI). A standout highlight at this year’s CEBIT was the visionary keynote from Marc Raibert, founder and CEO of the U.S. firm Boston Dynamics, who illustrated the incredible opportunities that are now within reach via a four-legged robot dog, which is capable of moving autonomously over rough terrain.

(report regarding robotics)


Internet of Things

With the advent of 5G technology, mobile wireless data is now about to take a quantum leap. Real-time data communications now make it possible to instantly implement many of the brand-new IoT applications debuting at this year’s CEBIT. The display at the Vodafone stand for instance showed visitors how 5G wireless-connected robots are able to learn from each other, even when physically separated by hundreds of kilometers. In the future, the Internet of Things will even include sensor-equipped truck tires, offering fleet operators the opportunity to remotely monitor temperatures and pressures using an app. The themes of “Predictive Maintenance” and the “Smart City” were also prominent during the week’s event in Hannover. Huawei presented its intelligent nervous system for metropolitan areas to reduce the problem of increased traffic volumes and environmental pollution. Meanwhile, Software AG showcased a process for dramatically improving waste disposal and the maintenance of faulty street lights, with smart sensors on trashcans and connected street lighting concepts.

(Huawei – smart city)

(Huawei – smart transportation)


Future mobility

In Hall 25, the focus was on smart mobility concepts. Volkswagen was celebrating a world premiere with its “Sedric Active” robot car. The group plans to implement the vision of “pushbutton mobility” within a few years. Along with autonomous driving, the displays also focused on topics such as quantum computing and car sharing. The General German Automobile Club (ADAC) presented itself on the scale 11 startup platform as a host for startups and young companies in the mobility sector, while Deutsche Bahn unveiled the regional train of the future, featuring multimedia passenger services. Innovative electric mobility ideas were on display at the e.Go and IONITY stands, with an autonomous electric bus and a virtual reality trip into the e-mobility of the future.

(Sedric Active – robot car)

(IBM research – quantum computing)

(autonomous electric bus)


Drones & unmanned systems

Along with displays showcasing themes like “unmanned flying” and “drones for wildlife protection,” visitors also had access to experts for background information and advice. Visitors to the Intel stand were treated to a display of the first drone taxi, the “Volocopter”, which has already been granted certification for manned flights. Another drawing card was the nightly flight show on the d!campus, with 300 LED-equipped drones creating a stunning spectacle in the nocturnal sky.

(Intel – first drone taxi)

(powerful drones)

(report regarding drones)

(intel 300 drone light show)



Another vigorously debated theme at this CEBIT was the blockchain. Several companies featured exhibits demonstrating that this technology is suitable for secure data transmission in the IoT, and also for renewable energy trading or car-sharing services. Even administrative actors can benefit from the blockchain, as demonstrated by Materna, with its concept of a continuously updated fine particulates map based on citizen input. In a showcase of a slightly different kind, DXC Technology displayed a robot mixing drinks that had been ordered using a blockchain-based order chain.

(report about blockchain)


Further highlights: Top speakers, startups and influencers

From internet pioneer Jaron Lanier, the man who denounced the business model of the giant Internet companies, to “memory hacker” Julia Shaw, who revealed how human memory can be manipulated, and the security expert Mikka Hyppönen, who drew attention to qualitatively new forms of cyberattack (“to protect sensitive data from unauthorized access it is not enough to put it in a safe – we also need motion sensors inside the safe”) – this year’s CEBIT offered an unprecedented array of outstanding lectures and presentations.
A wealth of new ideas was also forthcoming from the scale11 startup platform, which has established CEBIT as Europe’s leading startup event. In Hall 27, more than 350 young enterprises from 40 nations were able to meet establish ed major players and capital investors. The CEBIT Innovation Award for 2018 was won by the German startup AIPARK, with its eponymous app showing automobile drivers where free parking spaces are located on a dynamic map.
As well as being a high-caliber business event, the new-look CEBIT was a festival for everyone, featuring outdoor concerts by musicians like Jan Delay, Mando Diao and the Giant Rooks, along with other performing acts and DJ sets.



The new, revamped CEBIT enjoyed a successful premiere, as more than 2,800 participating companies, over 600 speakers on ten stages, and 370 startups from Europe, Africa and Asia turned Hannover into the world’s digitization hotspot over a five-day period. Achim Berg, President of the German Association for Information Technology (Bitkom) set the tone for the event on “Welcome Night” on 11 June: “We are living in exciting times, with our boldest fantasies being overtaken by actual developments at breakneck speed!”. A high-visibility emblem of this phenomenon was the 60-meter tall Ferris wheel erected by SAP, with 40 passenger cabins which, apart from providing a unique aerial view of the digitization festival, showcased concrete examples of AI, IoT and other phenomena.

(cebit summary)

See you next year at CeBIT!

Source: https://www.cebit.de/en/press/press-releases/article_31107

AEM TouchUI dropdown mandatory validation

Christoph Thommen

In AEM 6.2, there is no mandatory validation for dropdowns in dialogs, when having a “Please select” option in place. This is due to a validation check in the out of the box AEM validator which does a check for “value != null”, which is not the case when having a “Please select” option (value would just be a blank String).

There is currently no other option then implementing a custom validation. This requires the following steps:

  1. Create a new clientlib with the following configuration
  2. Add the following JavaScript to this clientlib. This JS validates all select fields with a specific property set (see step 3)
  3. To mark select fields as required (and enable this validation), put the property validation=”select.required” on it:

TouchUI Page Properties encoding issue with AEM 6.2 CFP3

Christoph Thommen

While implementing a new website based on AEM 6.2 CFP3 for a customer, we faced the following problem:

When editing page properties right from “Sites” > “View Properties”, the encoding of special characters got lost/wrong. When editing the same page from via “Edit” > “Page Properties”, everything worked well.

This resulted in corrupt data:

The reason for this problem: In the “View Properties” dialog, the _charset_ property is missing which is required by AEM to determine the proper encoding of the submitted form data.

There is an easy fix for this:

By adding a hidden field named “_charset_” to the page properties dialog with the value “utf-8”, the problem is solved:


AEM 6.2 Image Upload Dialogs

Ben Zahler

When migrating to AEM 6.2 (we’re using SP1), the dialog for uploading images (or any other file) may not work with your existing configuration.

Affected are dialog items with sling:resourceType=”granite/ui/components/foundation/form/fileupload”.

The fix is very easy: Simply add this property to the configuration node:

In the documentation Adobe describes field uploadUrl as “The URL where to upload the file, you can use ${suffix.path} to use the current suffix”. It seems that value ${suffix.path} is what you need to put to get the default behavior.

However, there is another catch: in our tests, setting the image/file upload to mandatory breaks the functionality.
To make it work, remove the following property if present:

Hopefully, Adobe will fix this soon…

here is a full configuration of the upload item that works for us:

Right-To-Left Keyboard Switch for Granite / Touch UI

Ben Zahler

In the AEM classic UI, an author entering text in Hebrew can switch the editor to right-to-left mode with the keyboard shortcut ctrl-shift-x.

Unfortunately, this is not possible anymore in AEM’s granite or touch ui. While it sounds strange to create a keyboard shortcut to a touch ui, it is still helpful to have that ability when working from a desktop or laptop computer, so here is a package that implements this functionality:


This works in both the inline and the full screen rich text editor and has been tested in Internet Explorer, Chrome, Firefox and Safari.

Simply install to you AEM instance using the package manager and the keyboard shortcut works.


Serving Assets with Selectors

Ben Zahler

In a project, we recently had the requirement to serve assets with a selector. The reason for adding the selector was that all CUG protected assets need to be served from an specific dispatcher farm.

Unfortunately, the extension of assets is part of the node name in AEM. A sample geometrixx asset is stored as node “GeoCube_Datasheet.pdf” under /content/dam/geometrixx/documents .

When we try to access this with a selector /content/dam/geometrixx/documents/GeoCube_Datasheet.secure.pdf, the resource cannot be resolved, resulting in a 404.

After checking the Sling source code, we’ve found a way to get to the document with the selector: add all the selectors after the extension, and then add extension .res.

Why? that’s quite complicated:

  • adding the selectors after the original extension makes sure that the resource is actually found during resource resolution
  • rendering of resources needs to be done by the org.apache.sling.servlets.get.impl.helpers.StreamRendererServlet, but the servlet only accepts resources without an extension or with .res

But our troubles are not quite over yet: If we render this as a .res resource, Apache will serve this as content type application/x‐dtbresource+xml

The following rewrite rule should take care of that for pdf documents:

With this rewrite rule, the asset is actually available for end users at the desired url /content/dam/geometrixx/documents/GeoCube_Datasheet.secure.pdf, hiding the .res extension workaround from the end user.


Why components are not shown the in CoralUI Component Browser

Christoph Thommen

When developing new components in AEM 6.0/6.1 for the new CoralUI frontend you might end up in components not beeing shown in the Component Browser, even if they would be allowed to place on the current page based on the Design configuration.

When are components shown in the Component Browser / Sidekick?

  1. Component is allowed to be placed on the current page (Design configuration)
  2. Component is not hidden
  3. Component has a Dialog OR
  4. Component has a cq:editConfig

Why are components that are matching the criteria not shown in AEM 6.1 Coral UI

Components which are allowed to be placed on the page, are not hidden and do have a valid cq:dialog configuration (CoralUI dialog configuration), will not be shown in the Component Browser nor in the Sidekick. The reason for that is:

The Component Browser is still looking for the existence of the (“old”) extJS dialog.xml configuration. If there is no dialog.xml configuration, the component won’t be shown in the list.

How to resolve this issue

Instead of creating a dialog.xml which will never be used, a simple cq:editConfig can be created to make the components visible again:


Do you need assistance in upgrading to CoralUI or a new AEM version? Just let us know!

Duplicate SSL Filter Bundle in AEM 6.0 SP2 and SlingHttpServletRequest.isSecure()

Ben Zahler

In AEM 6.0 SP2, there is a new version of the “Apache Felix Http SSL Filter” bundle.

Unfortunately, it has a different package name as the one included in AEM 6.0, which means that both versions of the SSL Filter are active.


Now if both filters are active, the second filter does not have the information if originally, the request was sent over https or http.

Therefore the SlingHttpServletRequest.isSecure() method will always return “false”.

This is fixed if the old (0.0.1.R1394715) version of the filter is disabled, one way to do this permanently is the use of the AEM Commons OSGI disabler.


unsatisfied AEM components because of duplicate package names

Ben Zahler

Today, I had an issue, where some of my AEM components just would not start. They had “unsatisfied” service references, but the referenced services were up and running.

After a lot of searching and thanks to this blog post, I finally found out that the actual problem was that the referenced services’s package name was identical to a package name in my component’s bundle.

So what happened?

Let’s say my Interface was set up like this:

  • bundle name: codeflair-blog-api
  • Interface name: ch.codeflair.blog.api.BlogInterface.java

Package ch.codeflair.blog.api.* was exported and therefore the interface was made available by the bundle.

My implementing class ch.codeflair.blog.impl.BlogInterface.java was set up in a different bundle, let’s say codeflair-core-impl. In this bundle there was another (completely unrelated component) which implemented interface ch.codeflair.blog.api.ConflictingInterface.java in bundle codeflair-core-api.

codeflair-core-api also exported ch.codeflair.blog.api.*, and because the bundle also had a dependency on codeflair-blog-api, all classes from package ch.codeflair.blog.api in codeflair-blog-api were copied to bundle codeflair-core-api and also made available in that bundle. Now our ch.codeflair.blog.api.BlogInterface.java is availabe in two different bundles, so an adapter factory will not recognize that ch.codeflair.blog.impl.BlogInterface.java  actually implements ch.codeflair.blog.api.BlogInterface.java from codeflair-blog-api.

So the bottom line is: choose a good package struckter und really make sure a package is neever user in two different bundles!

AEM / CQ assets with xmpRights:WebStatement

Ben Zahler

if a DAM asset has property xmpRights:WebStatement set (usually automatically extracted from the file during the import workflow), CQ redirects to the value in the property, assuming that the property contains the path to a page where the user has to accept a license agreement for the asset.

Note that this only happens when the asset directly is accessed, but not when specific renditions are accessed.

To switch off this behavior, access the system console’s config for the BinaryProviderServlet:


Uncheck the option “Enable Digital Rights Management” and your assets are displayed correctly!