EPAM NEORIS | Digital Business Transformation Accelerator
United to grow.
Together to transform.
We are EPAM NEORIS, a digital accelerator that offers
customized solutions that drive measurable outcomes.
25
Years of experience
55
+Countries use our solutions
60
K+Experts developing cutting-edge technology
Our Services
Each solution is designed to drive innovation,
efficiency, and competitiveness in your company.

Digital Transformation
We reimagine operating models and experiences so your company can grow in the digital world.
Learn more
Artificial Intelligence
& Advanced Analytics
We detect opportunities and anticipate trends with the power of data.
Learn more
Process
Automation & RPA
We free your teams from repetitive tasks so they can focus on what really matters.
Learn more
Technology Consulting / Digital Consulting
We translate complex challenges into clear plans that integrate innovation and strategy.
Learn more
Software Development
& DevOps
We design agile solutions that scale with your business and accelerate time-to-market.
Learn more
Mainframe
Modernization
We update your legacy technology to make it more flexible, secure, and connected to the digital ecosystem.
Learn more
Cloud Services
We maximize the performance and resilience of your operations with customized architectures.
Learn moreSuccess Stories
Stories of innovation with real impact
The world's largest companies trust us to accelerate their digital transformation. Discover how we have taken several clients to the next level with customized solutions.
Red.es
Project with Red.es to strengthen the publication, management, and reuse of open data in Spain through technical support, semantic technology, and an AI chatbot.
Learn morePan American Energy
EPAM NEORIS developed a mobile solution with SAP BTP and SAP Fiori to digitize the risk hunting process, improving safety and response time in the field.
Learn moreCemex
Project that digitized and optimized its supply chain in Spain, Poland, and the United Kingdom through a mobile and web solution that reduced loading times and increased security.
Learn moreNEORIS is a Digital Accelerator
that helps companies step into the future.
We combine deep industry knowledge with the highest technological expertise in the market to create tailored solutions to overcome your business challenges and create disruptive growth.
We have 20 years of experience as business partner of some of the biggest companies in the world. We lead their digital transformation with a business-oriented mindset and the best tech-teams available, trained to target your businesses’ pain-points.
This is what distinguishes our Tech Consulting.
These are our pillars for Digital Transformation
BUSINESS ACUMEN – Our industry leaders are veteran businessmen who know their industries inside-out and guide their teams past common pitfalls to deliver deep-impact value. We take pride in our unique Roadmap Generation for each project, which allows us to have some of the lowest levels of errors and delays in the Technology industry.
CULTURE TRANSFORMATION – We transform the Digital Culture of your company to embrace change and harness innovation. Every project starts with a NEORIS Registered Tech Maturity Assessment, which identifies Technological Pain Points in your company which we target with Employee Specialized Training and Deep-dive workshops.
DIGITAL ARCHITECTURE – We don’t just provide Digital Solutions; we create a Digital Ecosystem tailored to your company’s unique situation that allows complete integration between Technology, your employees and your users. This is what separates a quick-fix from a robust and long lasting solution that will empower your business for years to come.
Be part of a Smarter World
The following has evaluated to null or missing: ==> homeLeaders [in template "20099#20135#65764" at line 452, column 16] ---- Tip: If the failing expression is known to be 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: #list homeLeaders as leader [in template "20099#20135#65764" at line 452, column 9] ----
1<#assign DLFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")>
2<#assign watermarkMap = "/documents/20126/45625/worldMap.png/" >
3
4<#if entries?has_content>
5 <#assign homeLeaders = []/>
6 <#list entries as curEntry>
7 <#assign journalArticle = curEntry.getAssetRenderer().getArticle() />
8 <#assign document = saxReaderUtil.read(journalArticle.getContent()) />
9 <#assign root = document.getRootElement() />
10 <#assign elements = initializeVariables(root, ["Name","Job","Office","Description","Photo"]) />
11 <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, curEntry) />
12
13 <#assign leaderName = "" />
14 <#if elements.Name?first?? && extractStringValue(elements.Name?first, locale) != "null">
15 <#assign leaderName = extractStringValue(elements.Name?first, locale) />
16 </#if>
17
18 <#assign leaderJob = "" />
19 <#if elements.Job?first?? && extractStringValue(elements.Job?first, locale) != "null">
20 <#assign leaderJob = extractStringValue(elements.Job?first, locale) />
21 </#if>
22
23 <#assign leaderOffice = "" />
24 <#if elements.Office?first?? && extractStringValue(elements.Office?first, locale) != "null">
25 <#assign leaderOffice = extractStringValue(elements.Office?first, locale) />
26 </#if>
27
28 <#assign leaderDescription = "" />
29 <#if elements.Description?first?? && extractStringValue(elements.Description?first, locale) != "null">
30 <#assign leaderDescription = extractStringValue(elements.Description?first, locale) />
31 </#if>
32 <#assign leaderPhoto = "" />
33 <#if elements.Photo?first?? && extractStringValue(elements.Photo?first, locale) != "null">
34 <#assign leaderPhoto = extractStringValue(elements.Photo?first, locale) />
35 </#if>
36 <#assign homeLeaders = homeLeaders + [{"Name":leaderName, "Job":leaderJob ,"Office":leaderOffice, "Description":leaderDescription, "Photo":leaderPhoto }]/>
37 </#list>
38</#if>
39
40<style>
41 .containerMeetOurGlobalLeadershipLeaderHome{
42 padding-bottom: 60px;
43 }
44
45 .titleMeetOurGlobalLeadership{
46 font-size: 32px;
47 font-weight: bold;
48 font-style: normal;
49 font-stretch: normal;
50 line-height: 1.25;
51 letter-spacing: normal;
52 text-align: center;
53 color: #000000;
54 }
55
56 .descriptionMeetOurGlobalLeadership{
57 font-size: 14px;
58 font-weight: normal;
59 font-style: normal;
60 font-stretch: normal;
61 line-height: 1.43;
62 letter-spacing: normal;
63 text-align: center;
64 color: #000000;
65 }
66
67 .meetTeamLeaders{
68 padding: 12px 24px;
69 font-size: 18px;
70 font-weight: bold;
71 font-style: normal;
72 font-stretch: normal;
73 line-height: 1.33;
74 letter-spacing: normal;
75 color: #000000;
76 border: 2px solid black;
77 }
78
79 .ceoImgLeader{
80 height: 100%;
81 background-repeat: no-repeat!important;
82 background-position: center top!important;
83 }
84
85 .containerImgLeaderAbout{
86 text-align: center;
87 height: 340px;
88 background-repeat: no-repeat;
89 background-position: center top;
90 transition: background-size .4s ease-in;
91 }
92
93 .containerInfoLeaderAbout{
94 padding-left: 30px;
95 padding-top: 15px;
96 }
97
98 .containerInfoLeaderAbout p{
99 margin: 0px;
100 font-size: 14px;
101 font-weight: 300;
102 font-style: normal;
103 font-stretch: normal;
104 line-height: normal;
105 letter-spacing: normal;
106 color: #000000;
107 }
108
109 .containerInfoLeaderAbout p:first-child{
110 font-weight: bold;
111 }
112
113 .descriptionCeo{
114 position: absolute;
115 bottom: 85px;
116 left: -195%;
117 width: 200%;
118 font-size: 14px;
119 font-weight: normal;
120 font-style: normal;
121 font-stretch: normal;
122 line-height: 1.43;
123 letter-spacing: normal;
124 color: #000000;
125 }
126
127 .infoCeo{
128 position: absolute;
129 top: 25px;
130 left: -12%;
131 width: 50%;
132 text-align: right;
133 }
134
135 .infoCeo p{
136 margin: 0px;
137 font-size: 14px;
138 font-weight: 300;
139 font-style: normal;
140 font-stretch: normal;
141 line-height: normal;
142 letter-spacing: normal;
143 color: #000000;
144 }
145
146 .infoCeo p:first-child{
147 font-weight: bold;
148 }
149
150 .containerButtonLeaderHome{
151 text-align: center;
152 padding-top: 20px;
153 }
154
155 .meetTeamLeaders:hover{
156 text-shadow: currentcolor 0.8px 0px 0px;
157 font-size: 18px;
158 padding: 12px 24px;
159 border: 2px solid black;
160 cursor: pointer;
161 }
162
163 .rowContainerLeadersAbout{
164 display: flex;
165 //justify-content: space-between;
166 margin-bottom: 35px;
167 padding-bottom: 35px;
168 border-bottom: 1px solid #d1d3d4
169 }
170
171 .containerLeadersAbout{
172 flex: 0 0 17%;
173 }
174
175 .containerLeadersAbout:hover {
176 cursor: pointer;
177 }
178
179 #leaders-adt .containerLeaderAboutPopup {
180 background-color: #fff;
181 color: black;
182 text-align: center;
183 position: fixed;
184 top: 9%;
185 //bottom: 9%;
186 left: 20%;
187 right: 20%;
188 content: "";
189 padding: 1% 5% 1% 5%;
190 }
191
192 #leaders-adt .popuptext{
193 visibility: hidden;
194 background-color: #000000ad;
195 width: 100%;
196 position: fixed;
197 height: 100%;
198 top: 0;
199 left: 0;
200 z-index: 55;
201 }
202
203 #leaders-adt .show {
204 visibility: visible;
205 -webkit-animation: fadeIn 1s;
206 animation: fadeIn 1s;
207 z-index: 60;
208 }
209
210 #leaders-adt .showWithoutTime{
211 visibility: visible;
212 animation: 0s;
213 z-index: 60;
214 }
215
216 #leaders-adt .popup .show {
217 visibility: visible;
218 -webkit-animation: fadeIn 1s;
219 animation: fadeIn 1s;
220 }
221
222 @-webkit-keyframes fadeIn {
223 from {opacity: 0;}
224 to {opacity: 1;}
225 }
226
227 @keyframes fadeIn {
228 from {opacity: 0;}
229 to {opacity:1 ;}
230 }
231
232 .rowFlexLeaderCenterAboutPopup{
233 height: 100%;
234 background-repeat: no-repeat!important;
235 background-size: contain!important;
236 }
237
238 .rowFlexLeaderCenterAboutPopup div{
239 height: 100%;
240 }
241
242 .flexLeaderCenterAboutPopup{
243 display: flex;
244 justify-content: center;
245 align-items: center;
246 height: 100%;
247 display: flex;
248 flex-wrap: nowrap;
249 flex-flow: column;
250 align-items: flex-start;
251 }
252
253 .flexLeaderCenterAbout{
254 text-align: left;
255 }
256
257 .addrsLeaderAboutPopup{
258 font-size: 14px;
259 font-weight: normal;
260 font-style: normal;
261 font-stretch: normal;
262 line-height: 1.14;
263 letter-spacing: normal;
264 color: #5f6569;
265 }
266
267 .jobLeaderAboutPopup{
268 font-size: 14px;
269 font-weight: normal;
270 font-style: normal;
271 font-stretch: normal;
272 line-height: 1.14;
273 letter-spacing: normal;
274 color: #5f6569;
275 padding-bottom: 25px;
276 }
277
278 .nameLeaderAboutPopup{
279 font-size: 32px;
280 font-weight: bold;
281 font-style: normal;
282 font-stretch: normal;
283 line-height: 1.25;
284 letter-spacing: normal;
285 color: #000000;
286 }
287
288 .descriptionLeaderAboutPopup{
289 font-size: 16px;
290 font-weight: normal;
291 font-style: normal;
292 font-stretch: normal;
293 line-height: 1.5;
294 letter-spacing: normal;
295 color: #000000;
296 }
297
298 .spanCloseDetailLeaderPopup{
299 float: right;
300 position: absolute;
301 right: 3%;
302 top: 5%;
303 font-size: 23px;
304 color: #989da1;
305 z-index: 66;
306 }
307
308 .spanCloseDetailLeaderPopup:hover {
309 cursor: pointer;
310 }
311
312 .imgLeaderAboutPopup{
313 background-repeat: no-repeat!important;
314 background-position: left!important;
315 background-size: contain!important;
316 }
317
318 .containerBeforeLeaderAbout{
319 float: left;
320 position: absolute;
321 left: 0;
322 top: 0%;
323 font-size: 23px;
324 color: #989da1;
325 z-index: 67;
326 height: 100%;
327 display: flex;
328 align-items: center;
329 }
330
331 .containerBeforeLeaderAbout:hover {
332 cursor: pointer;
333 }
334
335 .containerAfterLeaderAbout{
336 float: right;
337 position: absolute;
338 right: 0;
339 top: 0%;
340 font-size: 23px;
341 color: #989da1;
342 z-index: 67;
343 height: 100%;
344 display: flex;
345 align-items: center;
346 }
347
348 .containerAfterLeaderAbout:hover {
349 cursor: pointer;
350 }
351
352 .beforeLeaderAbout{
353 left: 0px;
354 position: absolute;
355 width: 40px;
356 height: 80px;
357 background: #f2f3f3;
358 -moz-border-radius: 0 100px 100px 0;
359 -webkit-border-radius: 0 100px 100px 0;
360 border-radius: 0 100px 100px 0;
361 display: flex;
362 align-items: center;
363 justify-content: center;
364 cursor: point;
365 }
366
367 .afterLeaderAbout{
368 right: 0px;
369 position: absolute;
370 width: 40px;
371 height: 80px;
372 background: #f2f3f3;
373 -moz-border-radius: 0 100px 100px 0;
374 -webkit-border-radius: 0 100px 100px 0;
375 border-radius: 100px 0 0 100px;
376 display: flex;
377 align-items: center;
378 justify-content: center;
379 cursor: point;
380 }
381
382 .iconCloseDetailLeaderPopup{
383 cursor: point;
384 }
385
386 @media only screen and (max-width: 994px){
387 .containerLeadersAbout{
388 flex: 0 0 33%;
389 }
390 }
391
392 @media only screen and (max-width: 600px){
393 .containerLeadersAbout{
394 flex: 0 0 100%;
395 }
396
397 .containerInfoLeaderAbout p{
398 font-size: 18px;
399 text-align: center;
400 }
401
402 .containerInfoLeaderAbout{
403 padding-left: 0px;
404 }
405
406 .containerMeetOurGlobalLeadershipLeaderHome{
407 padding:0px 15px 20px;
408
409 }
410
411 .containerLeaderAboutPopup{
412 top: 45px!important;
413 bottom: 0%!important;
414 left: 0%!important;
415 right: 0%!important;
416 }
417
418 .rowFlexLeaderCenterAboutPopup{
419 background: none!important;
420 }
421
422 .col-md-3.flexLeaderCenterAboutPopup.addrsLeaderAboutPopup{
423 display: none;
424 }
425
426 .nameLeaderAboutPopup{
427 //margin-top: 1.8em;
428 }
429
430 .spanCloseDetailLeaderPopup.neo-hover{
431 //margin-top: 1em;
432 }
433
434 .descriptionLeaderAboutPopup {
435 padding:10px;
436 font-size: 12px;
437 }
438
439 .jobLeaderAboutPopup {
440 padding-left:10px;
441 padding-bottom: 5px;
442 }
443
444 .nameLeaderAboutPopup {
445 padding-left:10px;
446 }
447 }
448</style>
449
450<script>
451 if (typeof leaders !== 'undefined') {
452 <#list homeLeaders as leader>
453 <#assign nameLeader = leader.Name?replace(' ', '_') />
454 <#assign nameLeader = nameLeader?replace('\"', '_') />
455 leaders.push('${nameLeader}');
456 </#list>
457 } else {
458 var leaders = [];
459 <#list homeLeaders as leader>
460 <#assign nameLeader = leader.Name?replace(' ', '_') />
461 <#assign nameLeader = nameLeader?replace('\"', '_') />
462 leaders.push('${nameLeader}');
463 </#list>
464 }
465
466 var sizeLeaders = leaders.length;
467 var currentLeader;
468 var indexLeader;
469
470 function showPopup(nameLeader) {
471 currentLeader = nameLeader;
472 var popup = document.getElementById(nameLeader);
473 popup.classList.toggle("show");
474
475 if (currentLeader == leaders[0]) {
476 document.getElementById("beforeLeaderAbout_"+currentLeader).style.display = "none";
477 } else {
478 document.getElementById("beforeLeaderAbout_"+currentLeader).style.display = "flex";
479 }
480
481 if (currentLeader == leaders[leaders.length -1]) {
482 document.getElementById("afterLeaderAbout_"+currentLeader).style.display = "none";
483 } else {
484 document.getElementById("afterLeaderAbout_"+currentLeader).style.display = "flex";
485 }
486 }
487
488 function closePopup(nameLeader) {
489 var popup = document.getElementById(nameLeader);
490 popup.classList.remove("show");
491 popup.classList.remove("showWithoutTime");
492 }
493
494 function beforeLeaderPopup() {
495 leaders.forEach(function(leader, index) {
496 if(leader == currentLeader){
497 indexLeader = index-1;
498 }
499 });
500 closePopup(currentLeader);
501 currentLeader = leaders[indexLeader];
502 var popupNext = document.getElementById(leaders[indexLeader]);
503 popupNext.classList.toggle("showWithoutTime");
504 if (currentLeader == leaders[0]) {
505 document.getElementById("beforeLeaderAbout_"+currentLeader).style.display = "none";
506 } else {
507 document.getElementById("beforeLeaderAbout_"+currentLeader).style.display = "flex";
508 }
509
510 if (currentLeader == leaders[leaders.length -1]) {
511 document.getElementById("afterLeaderAbout_"+currentLeader).style.display = "none";
512 } else {
513 document.getElementById("afterLeaderAbout_"+currentLeader).style.display = "flex";
514 }
515 }
516
517 function afterLeaderPopup() {
518 leaders.forEach(function(leader, index) {
519 if(leader == currentLeader){
520 indexLeader = index+1;
521 }
522 });
523 closePopup(currentLeader);
524 currentLeader = leaders[indexLeader];
525 var popupNext = document.getElementById(leaders[indexLeader]);
526 popupNext.classList.toggle("showWithoutTime");
527 if (currentLeader == leaders[0]) {
528 document.getElementById("beforeLeaderAbout_"+currentLeader).style.display = "none";
529 } else {
530 document.getElementById("beforeLeaderAbout_"+currentLeader).style.display = "flex";
531 }
532
533 if (currentLeader == leaders[leaders.length -1]) {
534 document.getElementById("afterLeaderAbout_"+currentLeader).style.display = "none";
535 } else {
536 document.getElementById("afterLeaderAbout_"+currentLeader).style.display = "flex";
537 }
538 }
539</script>
540
541
542<div id="leaders-adt" class="neo-main-width" style="padding: 10px 0 10px 0;
543 margin-bottom: 20px!important;">
544 <div class="containerMeetOurGlobalLeadershipLeaderHome">
545 <@web_content_display instance_id ="meetOurGlobalLeadershipTeam-78as8" />
546 </div>
547 <div class="row rowContainerLeadersAbout">
548 <#list homeLeaders as leader>
549 <div class="col-md-2 col-xs-12" style="padding-left:15px!important; cursor:pointer; margin-bottom:20px;">
550 <@printLeader leader=leader />
551 </div>
552 </#list>
553 </div>
554 <div class="containerButtonLeaderHome">
555 <@web_content_display instance_id ="meetTheTeam-87ljj" />
556 </div>
557</div>
558
559<#macro printLeader leader>
560 <#assign nameLeader = leader.Name?replace(' ', '_') />
561 <#assign nameLeader = nameLeader?replace('\"', '_') />
562 <div onclick="showPopup('${nameLeader}')" >
563 <div class="containerInfoLeaderAbout">
564
565 <#assign leaderImage = "" />
566 <#assign defImage = jsonFactoryUtil.createJSONObject(leader.Photo) />
567 <#assign imageUUID = defImage.getString("uuid") />
568 <#assign imageGroupID = defImage.getInt("groupId") />
569 <#assign imageFolderID =0 />
570 <#if imageUUID!="">
571 <#assign imageFolderID = DLFileEntryLocalService.fetchFileEntry(imageUUID,imageGroupID).getFolderId() />
572 <#assign leaderImage = "/documents/" + imageGroupID + "/" + imageFolderID + "/" +defImage.getString("title") + "/" + imageUUID />
573 </#if>
574 <img class="" src='${leaderImage}' style="display:none;">
575 <p>${leader.Name}</p><!--OCA-->
576 <p>${leader.Job}</p>
577 <p>${leader.Office}</p>
578 </div>
579 </div>
580
581 <div id="${nameLeader}" class="popuptext">
582 <div class="containerLeaderAboutPopup spacingMarginEvent speakerEvent backgroundOpacitySpeakerDetail" >
583 <span class="spanCloseDetailLeaderPopup neo-hover"><i onclick="closePopup('${nameLeader}')" id="iconCloseDetailLeaderPopup" class="iconCloseDetailLeaderPopup icon-remove"></i></span>
584
585 <#assign beforeLeaderAbout = "beforeLeaderAbout_" + nameLeader />
586 <#assign afterLeaderAbout = "afterLeaderAbout_" + nameLeader />
587
588 <div class="containerBeforeLeaderAbout neo-hover">
589 <div onclick="beforeLeaderPopup()" id="${beforeLeaderAbout}" class="beforeLeaderAbout"><i class="icon-chevron-left"></i></div>
590 </div>
591 <div class="containerAfterLeaderAbout neo-hover">
592 <div onclick="afterLeaderPopup()" id="${afterLeaderAbout}" class="afterLeaderAbout"><i class="icon-chevron-right"></i></div>
593 </div>
594
595 <div class="row rowFlexLeaderCenterAboutPopup" style="background: url('${watermarkMap}')">
596 <div class="col-md-12 flexLeaderCenterAbout">
597 <p class="nameLeaderAboutPopup">${leader.Name}</p>
598 <p class="jobLeaderAboutPopup">${leader.Job}</p>
599 <p class="descriptionLeaderAboutPopup">${leader.Description}</p>
600 </div>
601 </div>
602 </div>
603 </div>
604</#macro>
605
606<#function initializeVariables rootElement variables>
607 <#assign values = {} />
608 <#list variables as key>
609 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='${key}']") />
610 <#assign value = [] />
611 <#if xPathSelector.selectSingleNode(rootElement)??>
612 <#assign nodes = xPathSelector.selectNodes(rootElement) />
613 <#if nodes?size > 1>
614 <#list nodes as node>
615 <#assign value = value + [node]>
616 </#list>
617 <#else>
618 <#assign value = [xPathSelector.selectSingleNode(rootElement)] />
619 </#if>
620 <#else>
621 <#assign value = [] />
622 </#if>
623 <#assign values = values + {"${key}" : value} />
624 </#list>
625 <#return values />
626</#function>
627
628<#function extractStringValue node language>
629 <#if node?? && node?is_hash>
630 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id='${language}']/text()") />
631 <#assign string = xPathSelector.selectSingleNode(node)!"null" />
632 <#if !string?? || string == "null">
633 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content/text()']/text()") />
634 <#assign string = xPathSelector.selectSingleNode(node)!"null" />
635 </#if>
636 <#return string.getStringValue() />
637 <#else>
638 <#return "null" />
639 </#if>
640</#function>
641
642
643<!-- !!!!!!!!!!!!!!!!!!!MACRO EMBEBER!!!!!!!!!!!!!!!!!!!!!! -->
644<#macro web_content_display default_preferences = "" instance_id = "" defaultDecorator = "UNSET" > <#attempt> <#assign VOID = freeMarkerPortletPreferences.setValue("groupId", themeDisplay.getScopeGroupId()?string) VOID = freeMarkerPortletPreferences.setValue("portletSetupPortletDecoratorId", (defaultDecorator != "UNSET")?then(defaultDecorator,"barebone")) VOID = freeMarkerPortletPreferences.setValue("articleId", setting) IID = "rID" + instance_id /> <!-- ${IID} --> <@liferay_portlet["runtime"] defaultPreferences=freeMarkerPortletPreferences.toString() portletProviderAction=portletProviderAction.VIEW instanceId=IID portletName="com_liferay_journal_content_web_portlet_JournalContentPortlet" /> <#assign VOID = freeMarkerPortletPreferences.reset()> <#recover> <!-- Could not embed web content display: ${instance_id} --> </#attempt> </#macro>