In 1890, August Kuehne and Friedrich Nagel founded a freight forwarding company in Bremen, Germany. Over the last 130 years, Kuehne+Nagel has evolved from a traditional shipping company to a global logistics partner that offers highly specialised solutions for major industries worldwide.
Today, Kuehne+Nagel is headquartered in Switzerland, with a presence all over the world. We focus our business on the most essential element: the needs of our customers.
Our story
In 1890, August Kuehne and Friedrich Nagel founded a freight forwarding company in Bremen, Germany. Over the last 130 years, Kuehne+Nagel has evolved from a traditional shipping company to a global logistics partner that offers highly specialised solutions for major industries worldwide.
Today, Kuehne+Nagel is headquartered in Switzerland, with a presence all over the world. We focus our business on the most essential element: the needs of our customers.
400 000
Nearly 1,300
offices worldwide, so that we are close to our customers.
100
countries, connected by our network.
Over 81,000
No. 1

A common purpose: Delivering progress to society
We strive to have a positive impact on the world around us by working towards sustainable logistics. Our Net Zero Carbon initiative aims to achieve carbon neutrality for our sea freight shipments by 2030.
We seek to make a difference today, for the people of tomorrow. Since 1890, we’ve been committed to delivering progress to society. And as the world around us changes, that commitment stays the same.
Our strategic approach: Customers first.
In order to develop new and tailored solutions, we collaborate closely with industries and companies and use the latest technology. This closeness to our customers allows us to develop flexible solutions, offering peace of mind to all parties involved. Our end-to-end logistics supply chain solution for the pharma and healthcare industry, for instance, has proven successful in meeting the specific demands of this highly regulated industry.
We are the partner that empowers your bold promises, by designing solutions that address ever-changing consumer demands.
Kuehne+Nagel is proud to be recognised as a leader in global logistics and rated most visionary in the 2020 Gartner Magic Quadrant for Third-Party Logistics Providers. This recognition validates our approach to challenging the status quo and developing innovative solutions for our customers.
Our source of inspiration: Our colleagues.
Together, we build a company culture that puts humans at the heart of everything we do – a company that is as great to work for, as it is to work with.
The following has evaluated to null or missing: ==> assetRenderer.getArticle [in template "20101#20128#200855" at line 28, column 26] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: journalArticle = assetRenderer.getArt... [in template "20101#20128#200855" at line 28, column 9] ----
1<#assign
2 pageExpandoBridge = layout.getExpandoBridge()
3/>
4<#attempt>
5 <#assign hideOtherTopicsTitle = (pageExpandoBridge.getAttribute("hide-other-topics-title", false))!false />
6 <#recover>
7 <#assign hideOtherTopicsTitle = false />
8</#attempt>
9<div class="cards__list">
10 <#assign liferay_journal = taglibLiferayHash["/META-INF/liferay-journal.tld"] />
11 <#if entries?has_content>
12 <#assign
13 DDMStructureLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMStructureLocalService")
14 DlFileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")
15 masterSiteGroupId = getterUtil.getLong(propsUtil.get("lgo.master.site.id"), 20124)
16 masterSiteUrl = themeDisplay.getPortalURL()
17 scopeGroupId = themeDisplay.getScopeGroupId()
18 countrySiteUrl = themeDisplay.getSiteGroup().getDisplayURL(themeDisplay)
19 siteUrl = (scopeGroupId == masterSiteGroupId)?then(masterSiteUrl, countrySiteUrl)
20 />
21 <#if !hideOtherTopicsTitle>
22 <h3 class="mb-4"><@liferay.language key="headline.other-topics" />:</h3>
23 </#if>
24 <div class="row override-row-width">
25 <#list entries as curEntry>
26 <#assign
27 assetRenderer = curEntry.getAssetRenderer()
28 journalArticle = assetRenderer.getArticle()
29 />
30 <div class="col-xs-12 col-sm-6 col-lg-4">
31 <#if (assetRenderer.getArticle())??>
32 <#assign
33 structure = DDMStructureLocalService.getDDMStructure(curEntry.getClassTypeId()) />
34
35 <#if (structure.getName(localeUtil.getDefault()) == "Industry Contacts")>
36 <#assign
37 contactFieldsMap = curEntry.getAssetRenderer().getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValuesMap()
38 title = (contactFieldsMap["Caption"][0].getValue().getString(locale))!''
39 imageData = (contactFieldsMap["ContactImage"][0].getValue().getString(locale))!''
40 buttonText = (contactFieldsMap["ButtonText"][0].getValue().getString(locale))!'' />
41
42 <#if (serviceLocator.findService("com.kn.lgo.contact.url.service.ContactUrlService"))?has_content>
43 <#assign
44 ContactUrlService = serviceLocator.findService("com.kn.lgo.contact.url.service.ContactUrlService")
45 url = ContactUrlService.getContactFormURLFromContactArticle(journalArticle, locale)/>
46 <#else>
47 <#assign url = ''/>
48 </#if>
49
50 <#else>
51 <#assign
52 topSectionFieldsMap = (curEntry.getAssetRenderer().getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValuesMap()["TopSection"][0].getNestedDDMFormFieldValuesMap())!{}
53 imageryFieldsMap = (curEntry.getAssetRenderer().getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValuesMap()["Imagery"][0].getNestedDDMFormFieldValuesMap())!{}
54 title = (topSectionFieldsMap["Title"][0].getValue().getString(locale))!''
55 imageData = (imageryFieldsMap["CardImage"][0].getValue().getString(locale))!''
56 url = siteUrl+"/-/"+curEntry.getAssetRenderer().getUrlTitle()!'' />
57 </#if>
58
59 <a href="${url}" class="card__link" data-gtm-content-type="card">
60 <div class="card card__item zoom-in">
61 <#if structure??>
62 <span class="mb-3 card__category">${structure.getName(localeUtil.getMostRelevantLocale())}</span>
63 </#if>
64
65 <#if imageData?starts_with("{") >
66
67 <#assign
68 jsonObjectMap = jsonFactoryUtil.createJSONObject(imageData)
69 fileEntryId = (jsonObjectMap.getString("fileEntryId"))?number
70 altText = jsonObjectMap.getString("alt")
71 fileName = jsonObjectMap.getString("name")
72 />
73 <#if fileEntryId != 0>
74 <#assign file = DlFileEntryService.getDLFileEntry(fileEntryId)
75 path = "/documents/" + jsonObjectMap.getString("groupId") + "/" + file.getFolderId()
76 + "/" + jsonObjectMap.getString("name") + "/" + jsonObjectMap.getString("uuid") />
77 </#if>
78
79 <#else>
80 <#assign path = "" />
81 </#if>
82 <#if imageData?? && path?has_content>
83 <div class="card__image">
84 <picture data-fileentryid="${fileEntryId}">
85 <source media="(max-width:576px)" srcset="/o/adaptive-media/image/${fileEntryId}/0500px/${fileName}">
86 <source media="(max-width:768px)" srcset="/o/adaptive-media/image/${fileEntryId}/0300px/${fileName}">
87 <source media="(max-width:992px)" srcset="/o/adaptive-media/image/${fileEntryId}/0410px/${fileName}">
88 <source media="(min-width:992px)" srcset="/o/adaptive-media/image/${fileEntryId}/0300px/${fileName}">
89 <img class="image__object-fit" src="${path}" loading="lazy" alt="${altText}"/>
90 </picture>
91 </div>
92 </#if>
93
94 <h3 class="card__title mt-2 text-left">${title}</h3>
95 <div class="btn btn-link read-more">
96 <#if (structure.getName(localeUtil.getDefault()) == "Industry Contacts")>
97 <span>${buttonText}</span>
98 <#else>
99 <span><@liferay.language key="link-text.read-full-story" /></span>
100 </#if>
101 <svg class="ml-2" width="17" height="14" viewBox="0 0 17 14" fill="none" xmlns="http://www.w3.org/2000/svg">
102 <path d="M12.892 5.874H0V7.81H12.892L8.228 12.452L9.46 13.684L16.302 6.842L9.46 0L8.228 1.21L12.892 5.874Z" fill="#0099DA"/>
103 </svg>
104 </div>
105 </div>
106 </a>
107 </#if>
108 </div>
109 </#list>
110 </div>
111 </#if>
112</div>