 Good morning everybody and are you all awake? Not too rough nights yesterday? Okay. We're from Dropsolid, Wesley and I. I think I have an introduction slide so I'm Frédéric Wouters. I'm the Enterprise Architect at Dropsolid and Wesley is also an Enterprise Architect at Dropsolid. Morning. And if you don't know Dropsolid, Obligate. We need to introduce the company of course. Dropsolid is a Belgium-based company. We're in Ghent. We have employees all over the world, also in Ukraine. We have partnerships also in Europe. We started actually not even ten years ago. I think it's eight or nine years ago. And we've grown from two founders until we are now almost at a hundred people. So like steadily growing. And we're not only doing Drupal because in Belgium we're a Drupal agency but outside of Belgium we do digital experience platform. Now what a digital experience platform is I will talk more about this today. I'm going to do two parts. The presentation is in two parts. First I'm going to try to inspire you a bit with personalization examples that you can see in the wild which you probably have seen already. And the second part will be you doing the personalization workshop. So it's a workshop if you have your computer you will not need it in the first minutes. But it might be interesting if you're joining the workshop to open it. If you have a GitHub account or a Gitpod account that might come in handy because we're going to do it on Gitpod so you don't need to set up your docker locally or or lamp stack or whatever we're going to do it on Gitpod so it will work for everybody. Okay let's start with the inspirational part. There are still some people coming in come in and take a seat. Did you know that 89% of customers begin doing business with a competitor after a poor customer experience. So people change after poor customer experiences. And when customers are targeted with three personalized pages conversion rates double going from 1.7% to 3.4%. And when they're exposed to 10 personalized pages conversion rates jump to 31%. So it's not something that we invented and we think it works. No this is something that's actually proven and by like scientific institutes that they prove this kind of statistics. Now personalization, a very broad subject. What is it? You all know it. Spotify has made a wrapped where you get based on the things that you listen in your Spotify you get at the end of the year a report and suggestions of your music. And if you're a sportsman and you like Strava they also do it. So you see in the bottom it's fairly new. It's not I don't think it's a year or old or more. They suggest through it. So it based on your speed based on the distance that you run they will suggest routes near your location so that you can try other things and see this kind of personalization at work. Netflix most of you know it. I don't have it myself but I saw this presentation of them and they don't only recommend different things based on your viewing behavior but also the way they construct a page, the kinds of video that they will propose to you but also all these images are the same show. They will generate different images based on your viewing preferences. I found this mind blowing. So everything at Netflix is a recommendation. I say that 80% of what people watch comes from these recommendations. So Amazon also some of you might notice it's an online store. They sell stuff and they also do personalization. You see here on top there's some new things that are personalized. There's some things that based on your customer data profile, customer data platform is the server side component that hosts customer data profiles and they also have this component based on your viewing behavior. They will suggest items that might be interesting for you. Of course as GDPR is a thing in the bottom you see view or edit your browsing history because sometimes you're really like looking at items that you do not want to show up again on your page. And they keep this in the customer data profile. They don't just personalize the web pages but they will also send you marketing automation emails based on these things. So it's linked with the marketing automation system where Amazon will send you then based on these products that you have looked at. They might interest you more. Other vendors do this as well. For example, TripAdvisor if you visit certain cities they will keep sending you emails until you say okay I'm not interested in going to Germany anymore. Please leave me alone. Can you do this in Drupal? No you cannot. Drupal is too limited for this. But if you do it on a Drupal based DXP, Drupal combined with the marketing automation tool and a CDP then you can do it. And this is what we're going to do today. The moving parts in the system that we're going to do in the workshop is Drupal as a content management system, Mautic as the marketing automation tool and Apache Unomi as the customer data platform which will allow us to do the personalization. Okay. This is the moment where we start a workshop. So if you have any questions or if you're stuck just raise your hand and I come over to you and help you out. I'm going to explain some things first. So we're using Gitpod. It would be interesting if you can log in to Gitpod. I'm going to move this a bit closer so it's easier for me. And you need to create a new workspace. I'm going to do it all along so you can see the demo if you're not using a computer. Okay. Create a new workspace and here you can paste the Github repository. I prepare the Github repository with everything that's needed. It's based on the WB stack. I added a Gitpod config file and some commands that we will need. So this is the repository that you want to use. It's Wouter's F slash Docker for Drupal dash Mautic. This one is what you want to copy and you want to paste it in here. I'm going to leave it here. Give me a sign when you're ready to follow along. You can do it. That's a fun workshop and it will work for everybody. If you're like doubting, I see some people doubting. Yeah, do it. It's good. It's good. It's good. It will work on your machine depersonalization and it's really cool to do the demo. Ready to go? No. I'm going to give them a few more seconds so you paste the URL into the Gitpod, press enter. I'm going to press it already, log in, and then it will start checking out the repository and creating a workspace. Okay. So everybody is getting started here. What you see here is the get started with knowing Gitpod. I'm going to close it because I'm going to do the explaining. And you see in the bottom there's the terminal. This is the terminal of your Gitpod. So actually Gitpod is a Docker container where all your containers will be booted in. So you see that's already pulling in my Docker images. The Docker images that are prepared are in the Docker compose file. So this is where they are described. And what's in there is the database. It's a Drupal. It's a Mautic. There's a PHP MyAdmin. There's also varnish, but it's not enabled. There's also solar, there's elastic search, but those are not enabled. And you can see that after doing pulling them, you can see that they are started already. And then on the left side here, there's a remote explorer. Here you see which services are exposed. This is configured in the Gitpod YAML file. So you see also when you hover on them, there's a globe on the right side. This way you can visit the specific service. The service that I have is Mautic. PHP MyAdmin, you know, the database administration tool. Mailhawk to capture any emails that go out. Drupal or Drupal website and the database. You see there's public and private. Public means it's exposed to the Internet. Private means you can only see it if you're in the Gitpod session. The commands that I prepared are in the commands markdown file, but we're not going to need them right away. Let's start with configuring Mautic. You can open that by clicking on the globe on the right. And if anything, like if I'm going to start by configuring Mautic for people that are following along. So I repeat, Mautic, you click on the globe, then you see the installer. It's working. People are following along. Okay. I'm going to add a database table prefix. I just added one database in the project and we're going to do Drupal and Mautic next to each other. And the password is Drupal as configured in the .env file. You need to configure a Mautic username and a password. And then this is the email configuration in Mautic because Mautic is sending out emails. We will not be doing that. So I'm just going to skip this step. After configuring your Mautic, you will see the Mautic login screen. I'm going to log into Mautic with the credentials I just created. So we've set up Mautic. That was, I think, a minute or two. Great success. I'm going to give the people some time to do the flow. Because in Mautic, we will expose the API to Drupal and we will do this throughout. I'm going to configure this. In Mautic, you can do that by pressing configuration. And then we need to do some settings. So you have the API settings where you can say, okay, enable the API. I'm going to save it. You also will need to enable, to change the course settings because we need to allow the domains that we're using. I'm just going to, like, disable course. But you should, of course, add your domains there and not just disable it. This is obvious. What I'm also going to do is creating API credentials. So we're going to use OAuth between the systems. And therefore I'm going to create an OAuth 2 credential. This will allow us to let Drupal connect to our Mautic. Now, you see the redirectory. This is actually the Drupal URL where Mautic will point back to. To find that, we need to find Drupal in our Git pot workspace. You can click it here, take the URL, and then you can paste it here. But there's one detail you will need to add slash Mautic slash callback to this URL. You need to click this one here, like this. With this URL, Mautic can go back to the Drupal instance correctly. After clicking save, you will see that the client ID and a client secret has been generated. After this, let's go and create a form. We're going to use a form because the personalization will be as such that we're going to set up the food install profile on Drupal. And we're going to selectively show a form to people that only visit vegetarian food, for example. We're going to allow them to subscribe to the vegetarian newsletter. And therefore, we need a vegetarian newsletter form. So let's create that one. Standalone form. Yes, I'm interested in vegetarian dishes. And I want to add some fields. So let's add an email field. By clicking contact field here, this will link the people that enter their email details into the form directly to the contact created in Mautic. You want to do that in specific cases. I'm also going to add a first name field and a last name field. And so you see that I've added these as contact fields. This means that when a person submits this form, the contact will be created directly with these details. So it will be in the lead tracking system because Mautic is actually a contact management system. It's a marketing automation tool. So let's save this form. We're not only going to show this form to people that are vegetarians. We will also see in our group or front that people that like chocolate. So we're also going to create the chocolate newsletter form. I want the chocolate newsletter please. We're going to add the email field again. Make it contact field. So I'm going to add the first name and the last name again. Last name. Oops. Okay. Let's drag the email to the bottom. Save and close. So we have two forms now. I'm a chocolate. I want the chocolate newsletter and I'm interested in more vegetarian dishes. So these two forms will be selectively shown in Drupal based on the surfing behavior. This is the Mautic configuration part. We're done in Mautic. Let's now go to configure Drupal. To go to Drupal, I already told you, you need to click on the globe icon here. But you saw already that there is this provided host name, not valid. This is because it's a Drupal installed, like it's not yet installed. It's out of the box. And the host file does not contain the Gitpod IO pattern yet. So I'm going to add it now. How do you do that in Gitpod? I've added the commands here in the, let me enlarge this a bit, in the commands file. So the first thing we're going to do is we're going to shell into the Docker container. The Docker container has been booted up, which you can see with Docker Compose PS. Here you can see the different containers. And by pasting this command, you will shell into the Drupal container. Oops, pasted a bit too much there. So you see here we're in the Drupal container, the what be Drupal container. In this container we can, I'm using VI to edit files. I don't know about you. Everybody has their preferences. So I'm going to edit the settings file. And as you see, I've prepared the correct host pattern here, which where I added Gitpod.io. So I'm going to go to the bottom of the file. And here I'm going to add Gitpod.io to the trusted host patterns. Immediately after saving this, you will see that your Drupal installation is actually ready to go. So I'm going to start installing Drupal. Make sure that you select demo, the Umami food magazine here, because otherwise we won't have the example content and makes it easy to work with. So there we go. This takes some time. Yeah. So the whole VI part, you can just actually just selecting Gitpod files as well. There's a file editor as well. Just in case you're not a fan of VI like Frederick is. Okay. I'm going to, you all know this, how it goes. I don't think I have to explain this to you, right? We're from Belgium as we told before. I'm not going to receive these emails. Okay. So we have a working Umami site working on Gitpod. I think it took us some minutes. This is great. After installing the Umami site, we will need to install some modules there. Valery, we were talking yesterday about installing a specific module on Gitpod. This is the step where you need to pay attention, right? So here you see we already shelled into the container and you can use Composer here. So we're going to install the Umami module, which will allow us to connect to Apache Umami instances. We're going to install the DrupSolid Personalization module, which is a module that we contributed to allow to connect to our specific Personalization engine where we added some AI to do the segmentation automatically. We're going to install the Matic Paragraph module because this not only adds Matic Paragraphs, I know the naming is confusing, but it also adds Matic Blocks. So Matic Paragraph adding Matic Blocks. And then we're also going to add Asset Injector because we're going to inject some JavaScript into the pages and the Matic module because the dishes, the food, the chocolate desserts, the soup have a lot of tags and we're going to expose them via the keywords Matic to our tracking system. So here we go. I was already logged in here in the shell. This should work. I'm going to do them one by one just to win some time. Don't want the demo to end too soon, right? It gives you the time to copy paste along. So all these models are now available for our Drupal in the code, in the installer, in the Docker container. We need to enable them, of course. So let's start with Unomi, Drupal Personalization, Matic Paragraph, Asset Injector, MetaTec, and I think that's about it. Yes. And then we're going to enable them. You saw a mark about internal page cache conflicting with the Drupal Personalization. This makes sense because the Personalization will show different versions of, for example, the front page to different users. An internal page cache will only cache one page for a specific user. So that's why it makes sense that we conflict with this model so we'll need to disable the internal page cache module to make this work properly. Okay, with that done, we're going to now need to configure all these modules. I'm going to start with the Matic Configuration. Here you see you can choose OAuth and we're going to choose HDPS. The base URL is the one that we created. I'm going to go to the credentials here because we will be needing them. And for this one, we won't need the trailing slash and the starting protocol. We will need the client ID, client secrets. The redirect base URL is filled incorrectly out of the box. So when we save this form, you will see that we are pointed to Matic and we need to log in there. This is the OAuth flow working. And now we will see that it wants us to approve the connection between Drupal and Matic, which we want. So now we've connected our Drupal with Matic. This means that we can now create Matic blocks and connect to the API. At Drupal, we also have some implementations where we have custom modules pushing data, tags, contacts, things directly into Matic and the API of Matic is exposed via this module as well. So it's actually sort of a Matic API module, but the naming is confusing. So Matic is configured. Let's now go to the Unomi module. Was it not enabled because of the conflict? Let's see. We're going to need it. There we go. Unomi. We're going to use the drop-solid platform connector. The cookie name here, this is the, yes? Apache Unomi is the tool that we use under the hood to do the, it's actually the customer data platform. So it's a CDP tool. You remember the three globes that we have. So we have Drupal for content management. We have Matic for the marketing automation. And Apache Unomi, that's a tool that we use for customer data platform. So that's where all the customers, the profiles are being saved. It keeps track of sessions and we can segment users in that tool. So when enabling that one, we're also going to use HTTPS. And there we're going to go to a platform. I'm going to show you the credentials. This is our interface because Apache Unomi out of the box is a REST API. And we've built an interface on top of that to make it easy. I'm going to use the Floresta CDP, take the information here. So these are the credentials that we will need to connect to Unomi. So we're using one of our platform for now. But you could just as well set up a Unomi yourself. But we didn't get that to work and get bought yet. But yeah, we're using this one because it's easier for now, for demo purposes. But you could... You can connect to a raw Unomi as well. We just made it easier a bit. We will need the client secret there. I generated one. It's this one. I also shared it in the chat on the event app. For this specific session, I copied it so you don't need to copy it from the screen. Maybe leave it a bit on the screen for people who do not have access. I know. Sorry, I'm sorry. Just no way around it. It's automatically generated. Do you know me? Client secret. Maybe we need to explain a little bit how things are connected to each other. So we have a Drupal that is running on its own. It connects to MOTIC. That's just for creating the forms and sending the form data. Subscribing to newsletters basically. MOTIC is a bit more complex than that. And then we have the CDP, based on your browser or your behavior. It will send all the meta text to that too. To the CDP and then from there. Okay. It's going through the frontend. I'll go deeper on that. We have ten more minutes, so I'm going to continue the workshop if that's okay. We've now configured the MOTIC module. We've configured the Unomi module. We still need to add a JavaScript so that the tracking starts to act. So therefore we're going to go to the Asset Injector at the JavaScript there. And here in our text file, I've added the scoring.js. So this is the Unomi tracking script. And in the Unomi tracking script, you will see that there's a default tracking script, which is also exposed in our DrupSolid platform. So you see, we call it the Capture script, which just captures user data and saves it into the customer data platform. But I've added something specifically for this workshop if there is keywords, which will be the tags that are on the dishes in the Unomi. It's going to be chocolate. It's going to be soup. It's going to be vegetarian. And for each of these dishes, I cleaned it up a bit, I'm going to add a specific field to the CDP. Why do I do this? To explain to you that the CDP is not something that's fixed. You can add your own fields, your own data into the CDP. So you can have a commerce system putting commerce data into the client data. You can add, like, a visiting behavior to the CDP and you can have, like, the mailing system adding mailing preference to the CDP. So this really, that's why it's called the customer data platform. This is where the customer data comes together. So what I did is I've added the recipe field here, and I'm going to add plus one after visiting a recipe. Okay. Let me come to that also in the end. It's good. It's good. It's good. I'm going to try to do a little bit of a workshop and then we can go deeper. Did I paste it now? No. So I'm going to paste it here. This is the Unomi script. Let's not pre-process it and load it in the head. There's also the Mautic tracking script, and you can find this under configuration. Tracking. Friedrich is now doing this via the asset injection module, but normally we do this via Google Tech Manager normally. That's what most people do. This is not the best practice. This just works for the workshop. Good. Good one. Okay. So I've added the Mautic and the Unomi script, and then there's one more thing I want to configure, and I added the specifics in the commands file. We need to make sure that the tags and the categories of the recipes are exposed to our tracking. Therefore we go to configuration, meta tag, content, and there you will find the keywords, and this will expose the categories and the tags that the recipe is in to the frontend so we can start working with it. The tracking script will capture all metadata. That's what the JavaScript basically does, all the metadata that is in the head of your HTML. It will copy that and send that to the Unomi instance. Sorry. Okay. I'm going to the frontend. I'm going to open in my inspector, and then if we look at some dishes, let's see if it works. So what's happening here is I have also another thing you won't do on production, but you see that the courses, this is a main course, it's vegetarian, pasta, and it's baked. There are some other recipes. Let's go there. Chocolate is good. This is there. One more thing we need to configure in Drupal is the actual personalization. We need to add a blog that will show up only to people liking chocolate. This is the magic mustard. I'm going to add some other blogs, like we do in Drupal. And then I'm going to do it via the content, place blog, and I'm going to add a custom blog. There you see that there's the Maltic blog, which is added here from the Maltic Paragraphs module, remember. So we're adding the, let's start with chocolate, subscription blog. And here you see that there is a form field where you can select the form. And these are the Maltic forms. This will allow the forms to be injected automatically into Drupal. The next thing you see here is the Unomi segment selection. This is added by the Drup Solid Personalization module or the Unomi module. And here you see some segments already. There's a lot of segments. I prepare these segments for you because I do some preparation in advance, right? I think there's a surfing form Czech Republic, likes vegetarian, soup person, and we were talking about chocolate, so people like chocolate. This blog, I'm going to save it and position it because that's displayed, the title for now, content. So we're showing this with a Maltic blog for now, but you could do it with any other blog. Yes. We do it because, well, that's part of the demo, but you could add an image to an extra chocolate image on your home page based on the section that they are in. I like vegetarian food, so that's why I'm adding the I Like Vegetarian Food blog, and the second newsletter I'm interested in vegetarian dishes will only be shown to people looking at vegetarian food, likes vegetarian. To illustrate this, I'm going to select the content region, drag it on top of the content, save the blog, and now as an admin, of course, I will see these blogs, let's go to a recipe and you see there are the blogs, but of course I'm an administrator, I see all of them, but as an anonymous user you will not see them. You will only start seeing them after the segmentation detects that you're a chocolate kind of person, or you like vegetarian dishes and you have visited these vegetarian dishes a lot. How does this work, the CDP? I'm going to show it in the Robsol platform interface because that's where the magic happens. This is the view on Apache Unomi, so here you see I'm going to take the vegetarian one, what happens here is this is the name of the vegetarian segment and here you see these are the fields that we are adding via the JavaScript into the CDP. So this can be anything, if you have a commerce system and it's about the size of your orders, or it can be if you're doing Azure integration and it's about specific fields that a user has, and so this allows people to be segmented in different kind of segments. That's the easy way because we're doing it in JavaScript and it's logical, but we also have a discovery mechanism which allows the AI to look at, okay which kinds of groups are there on the side by looking at the traffic and just automatically trying some groupings. I'm going to just illustrate that. So we have some example groupings here. Of course, our florist has an example website so the traffic might not be making sense here, but these are groups so this is about taxes, this is about goods, this is about specific names, and this is about accounting, so here you see that this has detected these kinds of groups on the example website. You can run it with discovery with four groups, three groups, and this is what you try a bit as a marketeer. You try, okay give me some groups, try three, try four, try five, and then we say, okay this is the division of things that I see on my website then you can say, okay transfer them to segments, and with these segments, this is a different kind they can be automatically segmented because we know the traffic that looked like the segment and we can automatically segment and do this into these categories. So we have two types of segmenting here. We have the logical where we say, okay we are visiting chocolate stuff, we add a counter, it's a scoring mechanism, and we have the automatic segmentation where it's really based on your surfing behavior and just trying to make it fit in one group or another. Yeah, it's a K-means model, so what it does it's take like all of the data, and all the data means all of the events that happen, so page loads and with every page load there's a title, there's keywords, so you can actually steer a bit what is in the AI, but it takes all this into account and I have this amount of traffic of two weeks and try to group them in three groups based on all this data and then it gives you three groups and it takes the keywords of the keywords to show you, okay these are the groups that we think it makes. We say about two weeks of traffic is like, it depends of course with AI, like always the more data you have the better your grouping is of course. But valid question, good one. So I'm going to show you, I show you the vegetarian light, so what I've configured here is if people have visited more than four vegetarian dishes, they're going to fall into this segment and they will start seeing this. The segmentation was already active, I created these in advance, so actually when we now the moment of truth, let's see if it works. It's not on your computer, it's on Gitpod, so let's see, I'm going to be a vegetarian today. Small side track, we also created a browser application called the segment selector, because what I'm going to do now is manually be a vegetarian by selecting the dishes, but imposing this on your marketeers is not a good thing, so we have a browser app so they can just put me in the segment let's check how the site looks, just a small side track here. So this is oatmeal, this is carrots, let's see I'm going to just check all of them I don't remember the amount that I put there, so for variations sake, let's find something else, maybe some chocolate back to the recipes, Mediterranean quiche, no, which is a vegetarian I expected it to come like run now, no I did save the blocks right, yeah I did save the blocks, yeah I was scripted there yeah, but maybe look in the visitor logs of your soup gluten free no, it's not there's no errors, it's okay it has to work, it will work the block is there right we saved it right, just check quiche, that would be very drooplish the meta tags, I saved those should work now let's see vegetarian let's do some chocolates of all, see if that one works better exciting I don't remember which amount I put it, so based on the surfing behavior, you can alter the scoring mechanism also you can change the time constraint, so if I'm in chocolate for this time and you can let it expire, this is in your control because it's a JavaScript API it's a REST based thing, so you can really have control over it, but you see this is only visible for people that having this kind of surfing behavior, and I visited other pages in between, so if you want to keep track of this in code it's an entirely different thing so this is really something to you could do it of course, you can do it in JavaScript in the front, but it's a different thing, but now we're really using the CDP to make it different just one more takeaway we're also using this on our production website so dropsolid.com dropsolid.com and also here you see I'm already logged in as an administrator and you see here this block for example is only shown to people from Prague, I'm going to illustrate this by showing you the segment and how it works so platform CDP now I'm going to go to the dropsolid CDP here, segments here you see the block segment and because we track a lot of the user data, you can work based on things that they have visited but also we do a geocoding we don't save the IP address because that would be fingerprinting and we don't do that but we geocode it and we save the country and the city which allows us to see if a person has a certain language, if the country code is checked, if they're coming from a UTM campaign that would be via the browser or LinkedIn ads, so there's multiple mechanisms that you can use to start making your segments, you really give the market your control over that I think this is the essence of the workshop and it's about time, right? Yeah, a couple more minutes maybe you could quickly explain how this is GDPR proof Okay, so yeah, it's a valid question and something that you also wanted to know about is the JavaScript, right? The tracking Yeah, so basically what does it end up being modic? Okay, so why did we set up the modic? Yes, so what we did is we show the we rendered the form on the pages here the moment the person enters the details into modic there will also be a profile I'm going to show it in production But it's two different profiles basically for the same person then we have also a profile, but the segment that I fall in as an anonymous visitor the moment I fill in these details the segment also goes to modic modic is a marketing automation tool I'm going to find myself in modic and show you the segments that I am in so Frederick There is an update available Did I click? So here you see this is my modic profile my email profile because I was you see here it's also keeping a track and the modic tracker does also these things it's very limited because it only tracks page views and not events which is very limited but you have the details here and here you can add custom fields so in modic you can add custom fields and you see that I was looking at the jobs at the drop solid side it's the starting session that I used so these segments I was surfing the drop solid side if we translate that to umami it would be I'm a chocolate lover and maybe also like vegetarian food and then you can create an email let's now go to the campaigns dropsolid.org and then you can really create personalized email campaigns so making the bridge to modic you cannot only personalize on the front page or the detail pages of your website but you can also let's see if I can edit this campaign here start the browser you can really send different newsletter based on segments that people are in if I'm a technical person this is the newsletter if you're in marketing you will receive a more marketing oriented email if I'm tech I will receive a more tech oriented email this is the first level of personalization receiving a different email modic also has that built capability we didn't do anything on that to also have dynamic blocks inside one email so you could also say I just want to make one email with a dynamic block based on the preferences so you can make a dynamic block where they like chocolate and add some chocolate stuff in there so this gives you the possibility not only personalize on the web page but also on the email side of things so you really have like a personalized experience throughout the contact with your client I'm going to come to your JavaScript one more the single source of truth is our customer data platform it depends because we have clients where the single source of truth is for example the CDP that they have that they say to us we have a CRM and this is the master data so there you need in modic you can also do the synchronization both ways you can say we're the master of the preferences but you can also say pulling the preferences from Drupal for example we have a client where we have a Drupal profile managing their preferences because it's taxonomy terms and it flows into modic so this is also really depends basically per case basis yeah absolutely thank you yeah I have to finish it off so Drupsolid also built I contributed to the EU cookie compliance module which is the module that allows to show accept on a EU compliance way and these JavaScript trackings we also for example on the Drupsolid side we integrated it with them so that if you deny it there will not be tracking of course if there's no tracking we cannot see over the multiple sessions what you're doing and then we cannot do personalization but since it's an addition it's also not a problem I think we're done okay thank you we're also very happy to answer questions here at the booth thank you