An error occurred while processing the template.
Syntax error in template "85082426756241#20119#996991" in line 184, column 138:
You can't use ${...} (an interpolation) here as you are already in FreeMarker-expression-mode. Thus, instead of ${myExpression}, just write myExpression. (${...} is only used where otherwise static text is expected, i.e., outside FreeMarker tags and interpolations, or inside string literals.)
1<#macro childNavigation portletDisplay navItem level> 
2    <#if navItem?? && navItem.getChildren()??> 
3        <#list navItem.getChildren() as childItem> 
4            <#local isSubmenu = !childItem.getLayout()?? /> 
5            <#local isBrowsable = childItem.isBrowsable() /> 
6 
7            <#if !isSubmenu || isBrowsable> 
8                <#local nav_child_css_class = "dc-nav-item" /> 
9                <#if childItem.isChildSelected() || childItem.isSelected()> 
10                    <#local nav_child_css_class = "${nav_child_css_class} selected" /> 
11                </#if> 
12                <#local showChildrenNavItems = childItem.hasBrowsableChildren() /> 
13                <#local itemHref = childItem.getURL() /> 
14                <#local css_if_has_child = "" /> 
15                <#if showChildrenNavItems> 
16                    <#local nav_child_css_class = "${nav_child_css_class} nav-trigger" /> 
17                    <#local css_if_has_child = "dc-nav-item--parent" /> 
18                </#if> 
19 
20                <li class="dc-nav-item ${css_if_has_child} dc-nav-item--level-${level} dc-flex dc-justify-between dc-items-center focus:dc-bg-gray-200 mt-0" id="layout_${level}_${portletDisplay.getId()}_${childItem.getLayoutId()}" 
21                    data-nav="nav_${portletDisplay.getId()}_${childItem.getLayoutId()}" role="presentation"> 
22                    <a class="dc-text-s dc-text-s-rtl" href="${itemHref}" ${childItem.getTarget()} role="menuitem"> 
23                        ${childItem.getName()} 
24                    </a> 
25                    <#if (showChildrenNavItems && level < 2)> 
26                        <div class="dc-flex dc-items-center dc-justify-center"> 
27                            <span class="dc-nav-arrow dc-nav-arrow--right"></span> 
28                        </div> 
29												<ul class="dc-hidden dc-col__inner level-${level+1} desktop-nav-menu" id="children_layout_${level}_${portletDisplay.getId()}_${childItem.getLayoutId()}"> 
30														<div class="dc-layer-top-back"></div> 
31														<@childNavigation portletDisplay childItem level+1 /> 
32												</ul> 
33                    </#if> 
34                </li> 
35			     
36            </#if> 
37        </#list> 
38    </#if> 
39</#macro> 
40 
41<#macro webContentNavigation portletDisplay navItem> 
42    <#if (navItem?? && navItem.getChildren()?? && navItem.getChildren()?size > 0)> 
43        <div id="child_content_layout_1_${portletDisplay.getId()}_${navItem.getLayoutId()}" class="dc-hidden"> 
44            <#list navItem.getChildren() as childItem> 
45                <#if dcSiteNavigationJournalArticles?? && dcSiteNavigationJournalArticles?has_content> 
46                    <#assign layoutId = childItem.getLayoutId()/> 
47                    <#if (layoutId?? && layoutId > 0 && dcSiteNavigationJournalArticles[layoutId?string]??)> 
48                        <#assign dcSiteNavigationJournalArticle = dcSiteNavigationJournalArticles[layoutId?string]/> 
49                        <#if dcSiteNavigationJournalArticle??> 
50                            <@liferay_journal["journal-article"] 
51                            articleId=dcSiteNavigationJournalArticle.articleId 
52                            ddmTemplateKey=DC_NAV_CONTENT_TEMPLATE 
53                            groupId=dcSiteNavigationJournalArticle.groupId 
54                            /> 
55                        </#if> 
56                    </#if> 
57                </#if> 
58            </#list> 
59        </div> 
60    </#if> 
61</#macro> 
62 
63<#macro childNavigationMobile portletDisplay navItem level> 
64    <#if navItem?? && navItem.getChildren()??> 
65        <#list navItem.getChildren() as childItem> 
66            <#local isSubmenu = !childItem.getLayout()?? /> 
67            <#local hasBrowsableChildren = childItem.hasBrowsableChildren() /> 
68           <#if !isSubmenu  || childItem.getRegularURL()?exists && childItem.getRegularURL() != ""> 
69                <#assign childItemHref = childItem.getURL() /> 
70                <#assign isNotLayout = childItem.getLayout()?? /> 
71                <#assign isBrowsable = childItem.isBrowsable() /> 
72                <li class="dc-nav_item <#if hasBrowsableChildren>dc-nav-item-with-childs</#if>"> 
73                    <div class="js-dc-nav-menu-mobile-link" data-is-url="<#if !isNotLayout && isBrowsable>_blank<#else>_self</#if>" 
74                         data-link="${childItem.getRegularURL()}"> 
75                        ${childItem.getName()} 
76                    </div> 
77                    <#if hasBrowsableChildren> 
78                        <@renderArrow /> 
79                    </#if> 
80                </li> 
81                <#if (hasBrowsableChildren && level < 3)> 
82                    <ul class="dc-secondary-nav dc-hidden level-${level+1}"> 
83                        <@childNavigationMobile portletDisplay childItem level+1/> 
84                    </ul> 
85                </#if> 
86            </#if> 
87        </#list> 
88    </#if> 
89</#macro> 
90 
91<#macro renderArrow> 
92    <div class="dc-flex dc-items-center dc-justify-center"> 
93        <span class="dc-nav-arrow"></span> 
94    </div> 
95</#macro> 
96 
97<#if !entries?has_content> 
98    <#if themeDisplay.isSignedIn()> 
99        <div class="alert alert-info"> 
100            <@liferay.language key="there-are-no-menu-items-to-display" /> 
101        </div> 
102    </#if> 
103<#else> 
104    <#assign maxAttempts = 10> 
105    <#assign delay = 100> 
106    <#assign siteNavMenuId = 0> 
107    <#assign dcSiteNavigationJournalArticles = ""> 
108 
109    <#list 1..maxAttempts as attempt> 
110        <#if siteNavigationMenuId?? && siteNavigationMenuId?has_content> 
111            <#assign siteNavMenuId = siteNavigationMenuId?number> 
112            <#if dcSiteNavigationJournalArticleService?? > 
113                <#assign dcSiteNavigationJournalArticles = dcSiteNavigationJournalArticleService.getJournalArticlesForSiteNavMenuId(siteNavMenuId) /> 
114            </#if> 
115            <#break> 
116        <#else> 
117            <#if attempt <= maxAttempts> 
118                <@liferay_aui.script> 
119                    setTimeout(function() { }, ${delay}); 
120                </@> 
121            </#if> 
122        </#if> 
123    </#list> 
124 
125    <#assign 
126    portletDisplay = themeDisplay.getPortletDisplay() 
127    navbarId = "navbar_" + portletDisplay.getId() 
128    level = 0 
129    /> 
130 
131    <#assign navItems = entries /> 
132					 
133 
134 
135    <nav id="${navbarId}" class="dc-bottom-header dark:border-gray-600 dark:bg-gray-900"> 
136        <div class="dc-bottom-header__nav"> 
137            <div id="mega-menu-full-image" class="dc-flex dc-items-center dc-justify-between"> 
138                <ul class="dc-flex dc-items-baseline dc-gap-20"> 
139                    <#list navItems as navItem> 
140                        <#assign 
141                        showChildrenNavItems = (displayDepth != 1) && navItem.hasBrowsableChildren() 
142                        rootLevelId = "root_level_${portletDisplay.getId()}_${navItem.getLayoutId()}" 
143                        /> 
144                        <li id="${rootLevelId}" class="dc-root-level <#if navItem?? &&( navItem.isSelected() || navItem.hasBrowsableChildren()?? &&navItem.isChildSelected() )> dc-selected </#if>"> 
145                            <#if showChildrenNavItems> 
146                                <button id="mega-menu-full-cta-image-button-${rootLevelId}" 
147                                        class="dc-hidden dc-cta-nav-item dc-py-20 xl:dc-flex dc-h6 dc-h6-rtl dc-text-navy-500 dc-flex dc-items-center dc-justify-between"> 
148                                   <!-- <span class="dc-nav-arrow"></span> --> 
149                                    <span class="dc-h6 dc-h6-rtl dc-nav-text dc-text-navy-500 hover:dc-text-navy-500">${navItem.getName()}</span> 
150                                </button> 
151 
152                                <div id="mega-menu-full-image-dropdown-${rootLevelId}" 
153                                     class="dc-hidden dc-mega-menu dc-pt-40 dc-bg-gray-50  dc-w-[300px] dc-absolute dc-inset-x-0 dc-top-full"> 
154                                    <!--<h4 class="dc-h4 dc-h4-rtl dc-text-navy-500"> 
155                                        ${navItem.getName()} 
156                                    </h4>--> 
157                                    <div class="dc-mega-menu__inner"> 
158                                        <#assign lvl = level + 1 /> 
159                                        <ul class="dc-mega-menu__left dc-col dc-relative"> 
160                                            <@childNavigation portletDisplay navItem lvl /> 
161                                        </ul> 
162                                        <#------  Additional right menu ------> 
163                                        <#-----------  Web-content ----------> 
164                                        <#if (lvl == 1) && navItem?? && navItem.getChildren()??> 
165                                            <div class="article-menu dc-col"> 
166                                                <#list navItem.getChildren() as childItem> 
167                                                    <@webContentNavigation portletDisplay childItem /> 
168                                                </#list> 
169                                            </div> 
170                                        </#if> 
171                                    </div> 
172                                </div> 
173                            <#else> 
174															 
175															<#if navItem.getLayout()??> 
176																<#assign layout = navItem.getLayout()> 
177																<#if  layout.getName(locale, false) != ""> 
178																	 <button id="mega-menu-full-cta-image-button book-venue-header" 
179                                        class="dc-hidden dc-cta-nav-item dc-py-20 xl:dc-flex dc-h6 dc-h6-rtl dc-text-navy-500 dc-flex dc-items-center dc-justify-between"> 
180																		<!--	 <span class="dc-nav-arrow"></span>  --> 
181																			<a href="${navItem.getURL()}"><span class="dc-nav-text dc-h6 dc-h6-rtl dc-text-navy-500 hover:dc-text-navy-500">${navItem.getName()}</span></a> 
182                                  </button> 
183																</#if> 
184																<#elseif ${navItem.getURL()}!=""> 
185                                    	<a href="${navItem.getURL()}"><span class="dc-nav-text dc-h6 dc-h6-rtl dc-text-navy-500 hover:dc-text-navy-500">${navItem.getName()}</span></a> 
186																	</#if> 
187 
188																	 
189															 
190															 
191                            </#if> 
192                        </li> 
193                    </#list> 
194                </ul> 
195            </div> 
196        </div> 
197        <!--------------  NAV Mobile --------------> 
198        <div class="dc-bottom-header__nav-mobile dc-hidden dc-bg-gray-100"> 
199            <h5 class="dc-h5 dc-h5-rtl dc-mobile-menu-title"> 
200                <@liferay.language key="explore-our-website" /> 
201            </h5> 
202            <!---- Level 1 -----> 
203            <ul class="level-1"> 
204                <#list navItems as navItem> 
205                    <#assign 
206                    hasBrowsableChildren = (displayDepth != 1) && navItem.hasBrowsableChildren() 
207                    rootLevelId = "root_level_${portletDisplay.getId()}_${navItem.getLayoutId()}" 
208                    isAddArrow = navItem.hasBrowsableChildren() 
209                    /> 
210 
211                    <li class="dc-primary-nav__item"> 
212										<div class="dc-nav_item <#if hasBrowsableChildren>dc-nav-item-with-childs dc-nav-item--white</#if>"> 
213                            <#assign isNotLayout = navItem.getLayout()?? /> 
214                            <#assign isBrowsable = navItem.isBrowsable() /> 
215                            <div class="js-dc-nav-menu-mobile-link" data-is-url="<#if !isNotLayout && isBrowsable>_blank<#else>_self</#if>" 
216                                 data-link="${navItem.getRegularURL()}"> 
217                                ${navItem.getName()} 
218                            </div> 
219                            <#if isAddArrow> 
220                                <@renderArrow /> 
221                            </#if> 
222                    </div>                        <!---- If 1st level has children -----> 
223                        <!---- Level 2 -----> 
224                        <#if hasBrowsableChildren> 
225                            <div class="dc-secondary-nav__container dc-hidden"> 
226                                <ul class="secondary-nav level-2"> 
227                                    <@childNavigationMobile portletDisplay navItem level+1 /> 
228                                </ul> 
229                            </div> 
230                        </#if> 
231                    </li> 
232                </#list> 
233            </ul> 
234        </div> 
235    </nav> 
236</#if> 
237			 
238 
239<#--@formatter:off--> 
240<script type="text/javascript"> 
241    setTimeout(function () { 
242        const rootLevelItems = document.querySelectorAll('[id^="root_level_${portletDisplay.getId()}_"]'), 
243            megaMenus = document.querySelectorAll('[id^="mega-menu-full-image-dropdown-root_level_${portletDisplay.getId()}_"]'), 
244            parentItems = document.querySelectorAll('[id^="layout_1_${portletDisplay.getId()}_"]'), 
245            childContent = document.querySelectorAll('[id^="child_content_layout_1_${portletDisplay.getId()}_"]'), 
246            children = document.querySelectorAll('[id^="children_layout_1_${portletDisplay.getId()}_"]'), 
247            containerSetSpacer = document.querySelector('.dc-container-set-spacer > .lfr-layout-structure-item-container'), 
248						HTML = document.querySelector('html'), 
249            mobileLinks = document.querySelectorAll('.js-dc-nav-menu-mobile-link') 
250            let currentMegaMenu = null; 
251 
252        rootLevelItems.forEach(function (item) { 
253            item.addEventListener('mouseenter', function (e) { 
254                updateChosenItemState(item, rootLevelItems, 'dc-root-level-hovered'); 
255 
256                hideAllMegaMenus(); 
257 
258                const megaMenuElement = document.getElementById("mega-menu-full-image-dropdown-" + item.id); 
259                currentMegaMenu = megaMenuElement; 
260 
261                if (megaMenuElement) { 
262                     
263                    toggleCssClass(HTML, true, 'dc-overflow-hidden'); 
264                    megaMenuElement.classList.remove('dc-hidden'); 
265                    const navBar = document.getElementById('${navbarId}'); 
266                    const navBarRect = navBar.getBoundingClientRect(); 
267                    megaMenuElement.addEventListener('mouseleave', function (e) { 
268                        const rect = this.getBoundingClientRect(); 
269                        if ((rect.top > e.clientY && navBarRect.right > e.clientX) 
270                            || (rect.top < e.clientY && rect.bottom > e.clientY && rect.x < e.clientX && rect.width > e.clientX)) { 
271                            return; 
272
273                        this.classList.add('dc-hidden'); 
274                        toggleCssClass(containerSetSpacer, false, 'dc-blur'); 
275                        toggleCssClass(HTML, false, 'dc-overflow-hidden'); 
276                        resetLevelsStates(); 
277                    }); 
278                } else { 
279                    toggleCssClass(containerSetSpacer, false, 'dc-blur'); 
280                    toggleCssClass(HTML, false, 'dc-overflow-hidden'); 
281
282 
283            }); 
284            item.addEventListener('mouseleave', function (e) { 
285                const megaMenuElement = document.getElementById("mega-menu-full-image-dropdown-" + item.id); 
286                if (!megaMenuElement) { 
287                    toggleCssClass(containerSetSpacer, false, 'dc-blur'); 
288                    toggleCssClass(HTML, false, 'dc-overflow-hidden'); 
289                    resetLevelsStates(); 
290                    return; 
291
292 
293                const navBar = document.getElementById('${navbarId}'); 
294                const navBarRect = navBar.getBoundingClientRect(); 
295                const rect = item.getBoundingClientRect(); 
296                if (rect.top > e.clientY || navBarRect.x > e.clientX) { 
297                    hideAllMegaMenus(); 
298                    resetLevelsStates(); 
299                    toggleCssClass(containerSetSpacer, false, 'dc-blur'); 
300                    toggleCssClass(HTML, false, 'dc-overflow-hidden'); 
301
302            }); 
303        }); 
304 
305        parentItems.forEach(function (item) { 
306            item.addEventListener('mouseenter', function () { 
307                updateChosenItemState(item, parentItems, 'dc-parent-item-hovered'); 
308                hideAllSecondLevelItems(); 
309 
310                const childContent = document.getElementById("child_content_" + item.id); 
311                if (childContent) { 
312                    childContent.classList.remove('dc-hidden'); 
313
314 
315                const children = document.getElementById("children_" + item.id); 
316                if (children) { 
317                    children.classList.remove('dc-hidden'); 
318                    let heightMegaMenu = getAbsoluteHeight(currentMegaMenu); 
319                    let heightTitleMegaMenu = currentMegaMenu.getElementsByTagName('h4')[0]; 
320                    let heightTitleMegaMenuHeight = getAbsoluteHeight(heightTitleMegaMenu); 
321                    for (let el of document.querySelectorAll('.dc-layer-top-back')) { 
322                        el.style.height = heightMegaMenu + 'px' 
323                        el.style.top = '-' + (heightTitleMegaMenuHeight + 42) + 'px' 
324
325
326            }); 
327        }); 
328 
329        children.forEach(function (item) { 
330            item.addEventListener('mouseleave', function () { 
331                item.classList.remove('dc-hidden'); 
332            }); 
333        }); 
334 
335        childContent.forEach(function (item) { 
336            item.addEventListener('mouseleave', function () { 
337                item.classList.remove('dc-hidden'); 
338            }); 
339        }); 
340				mobileLinks.forEach(function (item) { 
341            item.addEventListener('click', function () { 
342                window.open(item.dataset.link, item.dataset.isUrl); 
343            }); 
344        }); 
345        function getAbsoluteHeight(el) { 
346            // Get the DOM Node if you pass in a string 
347            el = (typeof el === 'string') ? document.querySelector(el) : el; 
348 
349            let styles = window.getComputedStyle(el); 
350            let margin = parseFloat(styles['marginTop']) + 
351                parseFloat(styles['marginBottom']); 
352            return Math.ceil(el.offsetHeight + margin); 
353
354 
355        function hideAllSecondLevelItems() { 
356            hideSection(children); 
357            hideSection(childContent); 
358
359 
360        function hideAllMegaMenus() { 
361            hideSection(megaMenus); 
362
363 
364        function toggleCssClass(el, add, cssClass) { 
365            if (add === true) { 
366                el.classList.add(cssClass); 
367            } else { 
368                el.classList.remove(cssClass); 
369
370
371 
372        function hideSection(section) { 
373 
374            if (section) { 
375                section.forEach(function (item) { 
376 
377                    item.classList.add('dc-hidden'); 
378                }); 
379
380
381 
382        function updateChosenItemState(chosenItem, listItems, cssClass) { 
383            chosenItem.classList.add(cssClass); 
384            listItems.forEach(element => { 
385                if (element !== chosenItem) { 
386                    element.classList.remove(cssClass); 
387
388            }); 
389
390 
391        function resetLevelsStates() { 
392            rootLevelItems.forEach(element => element.classList.remove('dc-root-level-hovered')); 
393            parentItems.forEach(element => element.classList.remove('dc-parent-item-hovered')); 
394
395 
396        let menuBtn = document.querySelector('[data-collapse-toggle="mega-menu-full-image"]'); 
397        menuBtn.addEventListener("click", function () { 
398					console.log("inside function....") 
399            let collapsedMenuBottomSection = document.getElementsByClassName('dc-collapsed-menu__bottom-section')[0]; 
400            let collapsedMenuInnerSection = document.getElementsByClassName('dc-collapsed-menu__inner')[0]; 
401            let mobileMenu = document.getElementsByClassName('dc-bottom-header__nav-mobile')[0]; 
402            if (mobileMenu.classList.contains('dc-hidden')) { 
403                HTML.classList.add('dc-overflow-hidden'); 
404                collapsedMenuInnerSection.classList.add('dc-opened'); 
405                mobileMenu.classList.remove('dc-hidden'); 
406                collapsedMenuBottomSection.classList.remove('dc-hidden'); 
407                this.classList.add('dc-opened'); 
408                document.querySelector("ul.level-1") 
409                let height = calculateHeight(); 
410                document.querySelector("ul.level-1").style.height = 'calc(100vh - ' + height + 'px)'; 
411            } else { 
412							console.log("inside else ") 
413                HTML.classList.remove('dc-overflow-hidden'); 
414                collapsedMenuInnerSection.classList.remove('dc-opened'); 
415                Array.from(mobileMenu.getElementsByClassName('dc-secondary-nav__container')).forEach(el => el.classList.add('dc-hidden')); 
416                Array.from(mobileMenu.getElementsByClassName('dc-secondary-nav')).forEach(el => el.classList.add('dc-hidden')); 
417                Array.from(navMobileContainer.getElementsByClassName('dc-nav-item-with-childs')).forEach(el => el.getElementsByClassName('dc-nav-arrow')[0].classList.remove('up')); 
418                mobileMenu.classList.add('dc-hidden'); 
419                collapsedMenuBottomSection.classList.add('dc-hidden'); 
420                this.classList.remove('dc-opened'); 
421                let navItems = navMobileContainer.getElementsByClassName('dc-nav-item-with-childs'); 
422                Array.from(navItems).forEach(i => i.classList.remove('opened')); 
423
424        }) 
425 
426        function calculateHeight() { 
427            let result = 0; 
428            let elControlMenu = document.getElementsByClassName('control-menu-container')[0]; 
429            let dcHeader = document.getElementById('dc-header'); 
430            let dcMobileMenuTitle = document.getElementsByClassName('dc-mobile-menu-title')[0]; 
431            let dcBottomSection = document.getElementsByClassName('dc-collapsed-menu__bottom-section')[0]; 
432 
433            if (elControlMenu) result += elControlMenu.offsetHeight; 
434            if (dcHeader) result += dcHeader.offsetHeight; 
435            if (dcMobileMenuTitle) result += dcMobileMenuTitle.offsetHeight; 
436            if (dcBottomSection) result += dcBottomSection.offsetHeight; 
437            let isIOS = navigator.userAgent.match(/iPad|iPhone|iPod/i) != null; 
438 
439            if (isIOS) { 
440                result += 82; 
441
442            return result; 
443
444 
445        let navMobileContainer = document.getElementsByClassName("dc-bottom-header__nav-mobile")[0]; 
446        let navItems = navMobileContainer.getElementsByClassName('dc-nav-item-with-childs'); 
447        for (let i = 0; i < navItems.length; i++) { 
448            navItems[i].addEventListener("click", function () { 
449                let innerContainer = this.nextElementSibling; 
450                if (innerContainer.classList.contains('dc-hidden')) { 
451                    innerContainer.classList.remove('dc-hidden'); 
452                    this.classList.add('opened'); 
453                } else { 
454                    innerContainer.classList.add('dc-hidden'); 
455                    this.classList.remove('opened'); 
456                    Array.from(innerContainer.getElementsByClassName('dc-nav-item-with-childs')).forEach(el => { 
457                        el.getElementsByClassName('dc-nav-arrow')[0].classList.remove('up'); 
458                    }); 
459                    Array.from(innerContainer.getElementsByClassName('dc-secondary-nav')).forEach(el => { 
460                        el.classList.add('dc-hidden') 
461                    }); 
462
463 
464                this.getElementsByClassName('dc-nav-arrow')[0].classList.toggle('up'); 
465            }); 
466
467    }, 500); 
468 
469const menuItems = document.querySelectorAll('.dc-root-level'); 
470menuItems.forEach(item => { 
471  item.addEventListener('mouseenter', () => { 
472    document.body.classList.add('dc-overflow-hidden'); 
473  }); 
474 
475  item.addEventListener('mouseleave', () => { 
476    document.body.classList.remove('dc-overflow-hidden'); 
477  }); 
478}); 
479	 
480</script> 
481<#--@formatter:on--> 

Dubai Chamber of Digital Economy

Transforming Dubai into a leading global hub for advanced technologies by attracting international companies and talent to the emirate and ensuring they can thrive.

Card Image

Business in Dubai 

The Business In Dubai initiative offers extensive support to help your business thrive in Dubai, and offers a range of services to enable your success.
Discover the key advantages of the Business in Dubai initiative, which is designed to support your growth, streamline market entry, and foster valuable connections.

Tailored Business Matching

Access a curated network of programme partners, ensuring matches that align with your specific business needs and goals.

Comprehensive Support Servicestle

Benefit from a range of corporate services, from legal and financial to marketing and localisation, facilitated through the programme.

Streamlined Market Entry

Leverage insider knowledge and connections to navigate the Dubai business landscape smoothly, reducing entry time and barriers.

Growth and Funding Opportunities

Connect with potential clients, investors, and funding sources to accelerate business growth and expansion in the region and beyond.

Premium Network

Access a network of key partners and comprehensive corporate services to support every aspect of your business journey. From business set-up and operations to networking and staff comfort, Dubai Chambers’ partners provide the essential resources and expertise you need to thrive.

Create Apps

Dubai is home to a nurturing ecosystem designed to facilitate and build digital services. We welcome dreamers, innovators, and creators to join the Create Apps in Dubai initiative to build new digital models and take advantage of the programme's benefits:

table professor illustration

Develop Your Own Mobile App

Realise your vision with the support to develop and launch your own application.

table professor illustration

Access to Expert Mentorship and Resources

24h trading volume on Flowbite exchange

table professor illustration

Educational Opportunities

Enhance your expertise with digital skills courses, certifications, and nanodegree scholarships for top performers.

table professor illustration

Discounted Licensing and Services

Benefit from discounted licensing and services to support your mobile app venture.

table professor illustration

Expand Your: Knowledge Hub

Dubai Startup Guide

A comprehensive resource designed to assist entrepreneurs and startups in navigating the process of establishing their businesses in Dubai.

Scaling From Dubai

Success Rates and the Available Environment

Building your Business in a Dynamic City: The Entrepreneur’s Guide 2023

Valuable guidance for entrepreneurs seeking to establish a business venture in Dubai.

Initiatives 

Whether you are an aspiring app developer, a start-up seeking investors, or a business expanding internationally, Dubai Chambers is dedicated to ensuring you benefit from expert advice, specialised training, global networking events, and practical support platforms.

Upcoming Events

View Dubai Chambers' schedule of upcoming events and workshops, which are designed to help you network, exchange knowledge, and achieve business success.
Card Image

4 February 2024

08:30 AM – 12:30 PM

Tags

This legal workshop provides an in-depth examination of critical legal issues in today’s dynamic employment landscape.

Card Image

16 January 2025

11:00 AM – 12:30 PM

Tags

This Webinar examines key issues of integrating data privacy provisions into contractual agreements within the UAE.

Card Image

9 January 2025

11:00 AM – 12:30 PM

Tags

This Webinar examines an insightful of exploring the comprehensive landscape of Construction.

News

Card Image

Unlock the potential of your business with Dubai Chambers' unique three-chamber model, which provides access to highly focused support through Dubai Chamber of Commerce, Dubai International Chamber, and Dubai Chamber of Digital Economy.

Card Image

Creating a favourable business environment to help companies achieve success and consolidate Dubai’s position as a leading global hub for business, trade, and investment.

Card Image

Transforming Dubai into a leading global hub for advanced technologies by attracting international companies and talent to the emirate and ensuring they can thrive.

Card Image

Strengthening partnerships with global corporations, investors, and entrepreneurs to enhance Dubai’s status as a major global trading hub and an attractive market for establishing and expanding businesses.

Ready to Elevate Your Business?

Members of Dubai Chamber of Commerce enjoy access to a range of exclusive benefits, including:

Smart Commerce

Events & Networks

Business Facilitation & Support