Extra Red – Gruppo Engineering – collabora con Red Hat per accelerare il successo dei clienti ed entra nel Partner Practice Accelerator come uno dei principali 48 partner al mondo
CLOUD & DEVOPS
Extra Red – Gruppo Engineering – collabora con Red Hat per accelerare il successo dei clienti ed entra nel Partner Practice Accelerator come uno dei principali 48 partner al mondo
event 03/07/2025
Extra Red, parte del Gruppo Engineering e Red Hat Certified Cloud Service Provider, entra ufficialmente nel Red Hat Partner Practice Accelerator, un percorso di crescita specializzato dedicato ai partner con comprovate capacità di delivery nei professional services. Con questa partecipazione, Extra Red si consolida come uno dei principali partner italiani e globali leader nelle soluzioni open source enterprise, dimostrando un forte impegno nel garantire risultati di successo ai clienti attraverso tecnologie e servizi Red Hat.
Extra Red, tra i principali 48 partner al mondo ad aver ottenuto questo riconoscimento, offre ai clienti la sicurezza di poter contare su un partner specializzato, riconosciuto per l’esperienza distintiva e per le offerte di servizi avanzati, garantendo il massimo supporto nella realizzazione di progetti strategici.
Essere parte del Red Hat Partner Practice Accelerator conferma Extra Red come partner altamente qualificato nella progettazione e implementazione di servizi e soluzioni ad alto valore aggiunto basati sulle piattaforme Red Hat, tra cui Red Hat Ansible Automation Platform e Red Hat OpenShift. Grazie a questa collaborazione, Extra Red potrà continuare a consolidare approccio, metodo e risultati di trasformazione, supportando un numero crescente di progetti di digital transformation a livello nazionale e internazionale.
Alessandro Spigaroli, Executive Director Eng Cloud & CEO Extra Red, ha dichiarato:
“Ottenere questa certificazione Red Hat come uno dei primi partner in Italia per il programma PPA ci conferma come punto di riferimento per le organizzazioni che vogliono affrontare percorsi di innovazione complessi e mission critical. Questo risultato riflette la nostra competenza tecnica, la capacità progettuale e la visione strategica orientata al valore per il cliente. Inoltre, si inserisce pienamente nella strategia del Gruppo Engineering di costruire un ecosistema di partner e tecnologie leader per abilitare la trasformazione digitale end-to-end, rafforzando Extra Red come technology service provider di eccellenza per tutte le soluzioni Red Hat.”
Red Hat valuta la preparazione dei partner partecipanti per fornire servizi e soluzioni critiche legate ad automazione e modernizzazione applicativa, validando la loro capacità di architettare, implementare e configurare soluzioni personalizzate per i clienti.
"Siamo entusiasti di vedere Extra Red, parte del Gruppo Engineering, entrare nel nostro Partner Practice Accelerator. Questo traguardo non solo sottolinea l'eccezionale competenza e l'impegno di Extra Red nell'offrire soluzioni open source basate sulle tecnologie Red Hat, ma rafforza anche la nostra capacità congiunta di supportare le aziende nella loro trasformazione digitale. La loro profonda conoscenza delle nostre piattaforme e la comprovata capacità di realizzare progetti complessi e strategici li rendono un partner fondamentale per i clienti che cercano innovazione e stabilità." Giampiero Cannavò, MED Ecosystem Leader, Red Hat
L’ingresso nel programma PPA rappresenta un passo significativo per Extra Red e per il Gruppo Engineering verso l’ulteriore consolidamento delle capability su tecnologie Red Hat, con l’obiettivo di presentarsi al mercato con proposte co-branded, accrescere la collaborazione con i team Red Hat e generare nuove opportunità per accompagnare i clienti in progetti di modernizzazione, cloud e automazione con il massimo livello di supporto tecnico e progettuale.
Questo riconoscimento consolida ulteriormente la posizione di Extra Red come interlocutore strategico sia per Red Hat sia per i clienti che vogliono realizzare progetti di successo, innovativi e sostenibili nel tempo.
La nostra partnership con Red Hat
rocket_launch ScopriFailed to "?eval" string with this error: ---begin-message--- Syntax error in ?eval-ed string in line 1, column 702: Lexical error: encountered "u" (117), after "\"Extra\\". ---end-message--- The failing expression: ==> entitiesListJson?eval [in template "20097#20123#43230" at line 59, column 29] ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign entities = entitiesListJson?eval [in template "20097#20123#43230" at line 59, column 9] ----
1<#-- Articoli in evidenza ADT -->
2<#assign portletBackground = "bg-red-white" />
3<#list portletPreferences?keys as key>
4 <#if key=="portletBackground">
5 <#assign portletBackground=portletPreferences[key]?first />
6 </#if>
7</#list>
8
9<#assign assetCategoryPropertyLocalService = serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService") />
10<#assign categoryService = serviceLocator.findService("it.extrared.redweb.commons.service.CategoryService") />
11<#assign assetEntryLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
12<#assign dlFileEntryService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') />
13<#assign otherArticles = languageUtil.get(locale, "other-articles") />
14<#assign readMore = languageUtil.get(locale, "read-all") />
15
16<#assign redSimilarJournalArticle = serviceLocator.findService("it.extrared.redweb.commons.service.SimilarJournalArticle") />
17<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
18<#assign dlAppServiceUtil = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService")/>
19
20<#assign article = "" />
21<#assign urlTitle = "" />
22
23<#assign dirtyUrlTitle = themeDisplay.getURLCurrent() />
24<#assign curPage = 1 />
25
26<#if dirtyUrlTitle?contains("redirect")>
27 <#assign namespace = "_" + paramUtil.getString(request, "p_p_id") />
28 <#assign currentUrl = "_" + paramUtil.getString(request, namespace + "_redirect") />
29 <#assign urlTitle = currentUrl?split("/")?last />
30 <#assign curPage = paramUtil.getString(request, namespace + "_cur")/>
31<#elseif dirtyUrlTitle?contains("?wkrh___tabs1=properties")>
32 <#assign last = themeDisplay.getURLCurrent()?split("/")?last />
33 <#assign urlTitle = last?substring(0, last?index_of('?wkrh___tabs1=properties')) />
34<#elseif dirtyUrlTitle?contains("?")>
35 <#assign last = themeDisplay.getURLCurrent()?split("/")?last />
36 <#assign urlTitle = last?substring(0, last?index_of('?')) />
37<#else>
38 <#assign urlTitle = themeDisplay.getURLCurrent()?split("/")?last />
39</#if>
40
41
42<#assign logfactory = staticUtil["com.liferay.portal.kernel.log.LogFactoryUtil"] />
43<#assign log = logfactory.getLog("FreemarkerLog") />
44${log.info("urlTitle: " + urlTitle)}
45
46<#attempt>
47 <#assign article = journalArticleLocalService.getArticleByUrlTitle(groupId, urlTitle) />
48<#recover>
49</#attempt>
50
51<#assign entitiesListJson = "" />
52
53<#if article?? && article?has_content>
54 <#assign entitiesListJson = redSimilarJournalArticle.getSimilarJournalArticlesWithConfig(portletPreferences, article.articleId, groupId, false, curPage?number) />
55</#if>
56
57
58<#if entitiesListJson?? && entitiesListJson?has_content>
59 <#assign entities = entitiesListJson?eval />
60</#if>
61
62<#assign noResult = languageUtil.get(locale, "no-result") />
63
64<#if entities?has_content && entities?size gt 0>
65 <section class="container-fluid bg5percent">
66 <div class="swiper container ">
67 <p class="mb-5 text-muted text-uppercase">${otherArticles}</p>
68 <div class="swiper-wrapper align-items-center pt-lg-5 mb-lg-5">
69 <#list entities?keys as k>
70 <#assign entitiesGroup=entities[k] />
71 <#if entitiesGroup?size gt 0>
72 <#list entitiesGroup as array>
73 <div class="swiper-slide">
74 <#assign urlImage = "" />
75 <#assign altImage = "" />
76 <#if array["image"]?? && array["image"]?has_content>
77 <#assign docVal=array["image"]?eval />
78 <#if docVal.url?? && docVal.url?has_content>
79 <#assign urlImage = docVal.url />
80 </#if>
81 <#assign fileEntryId = docVal.fileEntryId />
82 </#if>
83
84 <#if docVal.title?? && docVal.title?has_content>
85 <#assign altImage = docVal.title />
86 </#if>
87
88 <#assign titolo = array["articleTitle"] />
89 <#assign categories = array["categoriesString"] />
90 <#assign displayPage = array["displayPage"] />
91 <#assign assetEntryId = array["assetEntryId"] />
92 <#assign assetEntry = assetEntryLocalService.getEntry(assetEntryId) />
93 <#assign categoriesList = assetEntry.getCategories() />
94
95 <div class="col-lg-9 col-9 col-sm-9 p-0">
96 <@adaptive_media_image["img"] fileVersion=dlAppServiceUtil.getFileEntry(fileEntryId?number).getFileVersion() class="mb-4" width="100%" height="auto" alt="${altImage}"/>
97 <#--
98 <img width="100%" class="mb-4" height="auto" src="${urlImage}" alt="${altImage}" title="${titolo}">
99 -->
100 </div>
101 <div class="card-body pt-2">
102 <#if categoriesList?? && categoriesList?has_content>
103 <div class="card-subtitle text-muted">
104 <#assign categoriesString = "" />
105 <#list categoriesList as c>
106 <#assign hasProperty = categoryService.hasCategoryProperty(c.getCategoryId(), "type") />
107 <#if !hasProperty>
108 <#if !categoriesString?has_content>
109 <#assign categoriesString = c.getTitle(locale)?upper_case />
110 <#else>
111 <#assign categoriesString = categoriesString + ", " + c.getTitle(locale)?upper_case />
112 </#if>
113 </#if>
114 <#--
115 <#attempt>
116 <#assign typeProperty = assetCategoryPropertyLocalService.fetchCategoryProperty(c.categoryId?long, "type") />
117 <#recover>
118 <#if !categoriesString?has_content>
119 <#assign categoriesString = c.getTitle(locale)?upper_case />
120 <#else>
121 <#assign categoriesString = categoriesString + ", " + c.getTitle(locale)?upper_case />
122 </#if>
123 </#attempt>
124 -->
125 </#list>
126
127 ${categoriesString}
128 </div>
129 </#if>
130 <a href="${displayPage}" target="_self" title="${titolo}">
131 <h3 class="m-0">${titolo}</h3>
132 </a>
133 </div>
134 </div>
135 </#list>
136 <#else>
137 <div class="container">
138 <h2 class="m-0">${noResult}</h2>
139 </div>
140 </#if>
141 </#list>
142 </div>
143 <a data-aos="fade-right" class="pt-5 align-middle" style="display: block" href="/blog">
144 <i class="align-middle me-2 material-icons-outlined">explore</i>
145 <span class="align-middle">${readMore?capitalize}</span>
146 </a>
147 </div>
148 </section>
149</#if>