Beck et al. @RNUG HCL Connections with Office Profile integration

Munich, December 2020 – Anna Lipay, Martin Schmidt Beck et al. Current Positioning Delivery models / Revenue streams A professional, experienced consultancy and Digital Projects based on T&M or fixed service fees Transformation service provider with a continuous Managed services based on monthly service fees start-up mentality. Subscription based services Provisions from software license sales & cloud Enable Digital Work commissions. Human-centric transformation Form Data to Results Services are delivered from our virtual teams from , Romania & Data-driven Employees become transformation Our Business Practices corporate digital citizens Big Data becomes Enable Digital Work work. business value Creating the conditions for digital work, providing platforms, together. promoting sustainable use. Change Leadership, accompanying, organizational development. Form Data to Results Support data-driven decisions, AI-based analytics in the area of IT data and unstructured content AI driven solutions; analytics. Shape a Flexible IT Shape a flexible IT We help corporate IT organizations transform their own IT into Flexible & agile infrastructure & operations flexible, adaptive and robust IT services based on modern hybrid cloud environments. Save corporate IT departments from becoming obsolete 2 © Beck et al. 2020 3 We cover the complete supply chain of HCL Connections cover completethe supply chain HCL of We Beck et al.‘s HCL Connections Offering Connections HCL al.‘s et Beck © Beck et al. 2020 et al. © Beck Locations Munich (DE), Cluj (RO), Florianópolis (BR)

Employees Total 103; DE 51 – RO 35 – BR 17 (Headcounts)

Certified Technicians 75% of all employees

Shareholder Since spring 2020 Beck et al. together with binary, direktgruppe and infoWAN have been forming a new Digital Champion for D/A/CH.

Revenue DE 2018: € 9 Mio 2019: € 12 Mio

Revenue Share 45% recurring revenue, 45% projects, 10% licenses/ provisions

Equity (DE/Group) € 1.2 Mio/ 1.5 Mio (as of 1.1.2018)

Relevant customer Automotive (Dräxlmaier, , Continental, Magna, Infineon,) segments Travel & Transport (Lufthansa Group, Amadeus) „Hidden champions“ (KWS SAAT SE, pfm medical, Viridium, …) Public clients (BMVG, German Forces, EU agencies) Facts & Technology Microsoft, AWS, HCL, OKTA, Nexthink, CloudHealth, Splunk, Beezy, Figures partnerships MangoApps, Coyo, …

4 © Beck et al. 2020 Beck et al. Subsidiaries

Beck et al. Romania, Cluj-Napoca, Transylvania „Silicon Valley of Eastern “ Set-up 2006; currently 35 employees (headcount). Second largest university city in Romania Very stable team with a strong management team

Beck et al. Brazil: Florianópolis ”Silicon Island of Latin America” Set-up 2008; currently 17 employees (headcount). Young, stable team with strong technical background

Beck et al. Switzerland: Urdorf, Zürich area representation only, no operational office

© Beck et al. 2020

6 . Some of our technology partners our of Some © Beck et al. 2020 et al. © Beck 7

. customers Related © Beck et al. 2020 et al. © Beck HCL Connections with Office profile integration

11.12.2020 on RNUG Online Forum 2020

Andreas Weinbrecht

Martin Schmidt 8 Anna Lipay

Consultant

•Born in Moscow •Living in Munich •Studied linguistics at Moscow Region State University computational linguistics at Ludwig Maximilian University of Munich

•Since 2018 works at Beck et al. GmbH 9

© Beck et al. 2020 Martin Schmidt

Senior IT Architect IBM / HCL Connections since 2007

Experience in • Deployment, Migration, Operation and Customization • Kubernetes EKS and AWS, Container

Focusing on • enhancing with own containers • make the most out of customizer

More and more

• DevOps, Automation 10

© Beck et al. 2020 11 Infrastructure Office profile integration Office HCL Connections Profile Customization SDI: IBM Security DirectorySDI: IBM Security Integrator LSC: LDAP SynchronizationLSC: LDAP Connector Overview Synchronization

© Beck et al. 2020 et al. © Beck

• • • • •

We at will look We HCL Connections Connections with HCL 12 Why do we need Office Profile Integration? Profile need Office Why do we © Beck et al. 2020 et al. © Beck

16 © Beck et al. 2020 et al. © Beck information Profile from Microsoft Delve the Office component 17

Office profile integration Office

HCL Connections HCL Connections database server. Microsoft Microsoft O365 and in HCL Connections into a separate database table on the It is allowed to copy all the office profile data for all people who have a profile in

key: user key: user principal name ID or Azure The The Microsoft Office Profile and the HCL Connections profile share a common

© Beck et al. 2020 et al. © Beck •

• HCL Connections Connections with HCL

18

© Beck et al. 2020 et al. © Beck HCL Connections Connections profile HCL 19 Office profile integration Office

integration integration adds the Microsoft Office Profile information from the Delve

content content searchable. is The The data is synchronized into the Connections HCL profile database so that the The component into HCL the Connections profile.

© Beck et al. 2020 et al. © Beck •

• HCL Connections Connections with HCL

Synchronization Infrastructure 20

© Beck et al. 2020 21 ins. - in - in - in to allow was customized Azurenot only the Profile ID as key but the User Principal to use Name - which allows to Graph API. get data from the MS allows to use a different allows to use a different data source as key list to synchronize. ins are used during this project: - in in - - The Plug Database. Profile is available in the HCLas key as only this information Connections MS Graph API Plug Plug Foreign Key Plug Plug

© Beck et al. 2020 et al. © Beck 2. 1. Two plug It can be easily extended by Plug It can be easily extended by LSC is an open source connector to synchronize identities between an LDAP directory and LSC is an any data source, identities between to synchronize connector open an source including a JDBC any database with flat another LDAP server, connector, files, API REST

LSC: LDAP Synchronization Synchronization Connector LDAP LSC: Technical Details Technical 22 rated" ne 1.0.xsd - plugin - api - 1.0.xsd" graph - - plugin 2.1.xsd - - microsoft key - - 1.0.xsd" 1.0.xsd" core - - - foreign plugin plugin - - - 1.0.xsd lsc 1.0.xsd api key - - - lsc 2.1.xsd - graph core plugin - - - lsc 1.0.xsd foreign - - api - instance" - plugin - microsoft graph c users 2.1.xsd" - - - - key - core - s users project.org/XSD/lsc microsoft foreign - - - - project.org/XSD/lsc " - etc 8"?> - project.org/XSD/lsc - ="http://lsc \ ="http://lsc project.org/XSD/lsc - f "${SCRIPT_DIR}/ - project.org/XSD/lsc project.org/XSD/lsc ins during run time, you set the Javains during run need Variable LSC.PLUGINS_PACKAGEPATH time, to - - - ="http://www.w3.org/2001/XMLSchema ="http://lsc lsc ="http://lsc revision="0"> xmlns:foreignkey xmlns:xsi xsi:schemaLocation http://lsc http://lsc 2.1.5/bin/ - xmlns

lsc DLSC.PLUGINS.PACKAGEPATH=org.lsc.plugins.connectors.msgraphapi.generated:com.becketal.lsc.plugins.connectors.foreignkeysrc.ge © Beck et al. 2020 et al. © Beck - /opt/lsc export JAVA_OPTS="$JAVA_OPTS export JAVA_OPTS="$JAVA_OPTS To use the plug < xmlns:msgraphapi src - service - msgraphapi users - src - msgraphapi userPrincipalName userPrincipalName getCNXBeaSUserList true

TestTask1

© Beck et al. 2020 et al. © Beck id,userPrincipalName,displayName,skills,schools,aboutMe,birthday,interests,pastProjects,preferredName,resp es Source configuration LSC: LDAP Synchronization Connector LDAP LSC: Technical Details Technical 24 "] string. ActivityStream to json API","Message Delve / MS Graph Graph / MS Delve Support","Test obj.writeValueAsString(data) '' else var obj = new org.codehaus.jackson.map.ObjectMapper() obj = var srcBean.getDatasetValuesById("pastProjects") = data var 0 ) > data.length && (data if ]]>

pastprojects

© Beck et al. 2020 et al. © Beck => Dataset value format conversion: From multi value into LSC: LDAP Synchronization Connector LDAP LSC: Technical Details Technical 25 so that the LSC MS Graph LSCso that the MS Graph > ClientSecret ”. The Admin ”. The Admin consent is required. in - > and the msgraphapi:clientId User.Read.All ClientID > MS Graph API Plug MS Graph - 0f4eeee1dee0 - > 44e5 msgraphapi:tenant - abdf - ThisIsTheSecretKey > >9721302e >YouTenant.com > > in can login. - url msgraphapi >

pluginConnection < <

pluginConnection © Beck et al. 2020 et al. © Beck

© Beck et al. 2020 et al. © Beck This is one of the reasons to use the intermediate Delve Data DB. SDI has no connector to the MS Graph API but can easily connect to any JDBC data source. Each process to synchronize data is configured in an Assembly Line. These Assembly Lines can be easily extended to fetch further data. purpose, multi purpose, standard SDI is the Connections tool for HCL synchronize to user from profiles directorythe source into the HCL Connections profiles database. IBM® Security Directory Integrator is an integrated development environment and runtime and runtime DirectoryIBM® Security service for generalenvironment is Integrator development an integrated SDI: IBM SDI: Directory Security Integrator Technical Details Technical 27 : " length="256"/> attriubes " length="1000"/> delve_displayname =" delve_skills sourceKey =" " sourceKey config.xml. Add profile extension config.xml. ”, … ”, - DisplayName types.xml. Add the fields to your profile.toyour fields Addthe types.xml. - =" profiles ="Skills" - /profiles /tdi userLabel delve_skills " ”, “ ”, userLabel config config " - - delve_displayname delve_skills =" =" delve_displayname LotusConnections LotusConnections / / extensionId extensionId conf conf delve_displayname SyncDBfromSource sync_all_dns_iterate sync_dns_from_file read false simpleAttribute simpleAttribute < theCustomize Customize the Customize the < Name the values like “ Name the likevalues Use an LookupUse ConnectorJDBC database. get the delve data from your us Execute the Delve Data lookup just below the manager below lookupData lookup DelveExecute the function. just You need to customize these Assembly Lines:You need Assemblythese to customize

• • •

© Beck et al. 2020 et al. © Beck • • • • • • SDI: IBMSDI: Security Directory Integrator Technical Details Technical 28 config.xml - commonUtil.ftl ,

profileDetails.ftl

Adding code the Adding a new widget to the widgets Add new strings

Extend the data Extend the model Extend the profile display by

• • •

© Beck et al. 2020 et al. © Beck

• • To show the delve data HCL inside Connections profile, changesthese are necessary:

HCL Connections Connections profile customizations HCL Technical Details Technical 29 " length="256"/> types.xml - " length="1000"/> delve_displayname =" delve_skills sourceKey =" " config.xml, profile sourceKey - DisplayName =" profies ="Skills" - userLabel " userLabel " > > delve_displayname delve_skills =" =" > fullTextIndexed fullTextIndexed > >truetrueread false < read false <

simpleAttribute simpleAttribute profileExtensionAttributes < < …

profiles profiles < This change is identically to the TDI configuration change. TDI configuration to the change is identicallyThis configuration: your to Add the extension attributes HCL Connections CustomizationProfile HCL Technical Details Technical 30 " wpthemeWide ={version}"> " themes=" fullpage "/> details.xml?version - profile config.xml - profilesDelve_res " config.xml - com.becketal.delve.strings.ui.properties Visual components Visual " prefix=" delveInfo – =" "/> in the LC add: defId >/strings/ " registerd }/static/common/widgets/descriptors/ ” is delveInformation contatctInfo for the profilesDelve_res com.becketal.delve.strings.ui =" }/SSYGQH_KCCI/user/profiles/c_pers_profiles.html" modes="view modes="view }/SSYGQH_KCCI/user/profiles/c_pers_profiles.html" customizationfolder < name=" profileDelve_res widgetDev > bundleRefId helpSvcRef > =Office Profile =Office > ="{ deploymentConfigInterSvcRef <@util.renderNls nlsKey=nlsKey/> {did?trim}&v=editprofile','_blank')"><@util.renderNlsnlsKey=nlsKey/> profileDetails.ftl – " hideIfEmpty=true" ; ref, nlsBundle> dataId, dataKey, nlsKey, /> " hideIfEmpty=trueref,dataId," ; dataKey, nlsKey, nlsBundle> " dataKey,nlsKey, hideIfEmpty=true ref, dataId, nlsBundle>; " hideIfEmpty=false ref, dataKey, ; nlsBundle>dataId, nlsKey, "/> renderAs="list" label.delve_displayname label.delve_edit label.delve_skills label.delve_open align:middle;"> - label.delve_noprofile <@util.renderValue ref=ref /> <@util.renderValue ref=ref >

>

> -- > ------<#assign did><@util.renderValueref=ref /> <#assign id="_profilesDelve_EditDelve"