ADUserAutoPicker

Če se le najde čas, je ponedeljek pravi dan za novo objavo, kaj se je naumilo čez pretekli vikend. Tokrat objavljam post, ki se sicer tiče bolj SharePoint Developmenta, vendar se v določeni meri navezuje tudi na System Administration.

Torej, pri delu neke XYZ SharePoint custom aplikacije sem pri enem izmed obrazcev naletel na problem, kako rešiti evidentiranje uporabnikov, ki so omenjeni na tem obrazcu. SharePoint Dev za to ponuja PeopleEditor tool.

Vse lepo in prav do trenutka, ko bi radi evidentirali tudi uporabnike, ki jih ni v AD imeniku. Lahko bi zadevo zakomplicirali do onemoglosti in ponudili izpolnjevalcu obrazca to čudo na zgornji sliki ob določanju oseb, ki so v AD imeniku ter navadno vnosno polje ob določanju oseb, ki jih ni v AD imeniku.

Vsekakor lahko, vendar kje je potem tukaj “user friendly” obrazec? Zamislimo si še, da bi radi v obrazec vnesli n takih oseb -> torej 2*n vnosnih polj in posledično obrazec dolžine 1 km -> še kako elegantno!
Na koncu pa postavimo pred tak obrazec še uporabnika, ki ni ravno vešč v rokovanju z računalnikom, pa naj ugotovi, kako tak PeopleEditor sploh uporabljati. Vprašanja v smislu kaj je potrebno vnesti v vnosno polje, je to dovolj, ali je potrebno še kaj klikniti, kaj sploh predstavljata ikoni ob vnosnem polju, ju lahko kliknem itd. nebi bila ravno čudna, zbeganost uporabnika pa še kako razumljiva.

Dejstvo, da lahko, za še časovno sprejemljivo uporabo ob ogromnem številu uporabnikov v AD imeniku, v vnosno polje PeopleEditor-ja vnesemo samo uporabniško ime uporabnika in še to do znaka natančno, dodatno poslabša moje mnjenje o tem tako neuporabnem orodju! Kdo sploh pozna uporabniška imena vseh cca. 1500 uporabnikov v AD imeniku, saj si je ponavadi težko zapomniti že samo ime in priimek nekaj 10 oseb?
OK, pa saj zna PeopleEditor prebaviti tudi ime in priimek v vnosnem polju, vendar dodatna vprašanje uporabnika v smislu kaj hudiča počne toliko časa, saj sem kliknil na ikono ob vnosnem polju za preverjanje uporabnika itd. prav tako nebi bila čudna.
Iskanje oseb z njim po imenu in priimku ob veliki bazi AD uporabnikov traja kar nekaj sekund predolgo, ko pa na koncu zaradi pomankljivega vnosa ne najde nič, lahko brezglavo poskušamo znova in znova.
Prav tako nam vedno ni všeč, da ob več zadetkih za nek ime in priimek avtomatično izbere prvega, ki ga najde, saj ni nujno, da je ravno ta oseba tista, ki jo iščemo.

Druga ikona desno od vnosnega polja PeopleEditor-ja sicer predstavlja iskalnik po osebah v AD imeniku, vendar so njegovi rezultati kdaj kar frustrirajoči.
Predstavljajmo si, da iščemo osebo “Lojze Kranjski”, iskalnik pa nam vrne tri ali več zadetkov, kjer sta dva za isto osebo pod različnima domenama, ki sta nastala zaradi migracije AD uporabnikov iz starih domen na novo skupno domeno. Ostali zadetki pa predstavljajo neko drugo osebo, ki se sicer piše enako.
Z ostalimi podatki (naziv, telefonska številka, elektronski naslov in domena),  ki nam jih ponuja iskalnik, si pa tudi nimamo kaj dosti pomagati, da bi lahko s pomočjo njih ugotovili, katera oseba je prava.
Še slabše pa bi se z njimi znašel računalniški laik – le kako bi od njega lahko zahtevali, da npr. pozna, kaj je domena in kateri trenutno pripada?!

Vse to in še marsikaj drugega, kot je npr. togost, preveč klikov/preveč dela so stvari, ki so me odvrnile od uporabe tega orodja – t.i. PeopleEditor. Tako sem za te namene raje izdelal svoje orodje – t.i. ADUserAutoPicker.

Orodje ADUserAutoPicker je sestavljen zgolj iz enega vnosnega polja, v katerega lahko uporabnik obrazca vnese ime in priimek neke osebe.
Ob vnosu imena in priimka to orodje najprej trima odvečne prazne prostore na začetku in koncu vnesenega niza ter odstrani morebitne dvojne prostore znotraj njega. Tako postane imuno na napake uporabnika, ko vnese preveč prostorov.
Nato izdela vse možne permutacije vrstnih redov besed, ki predstavljajo ime in priimek osebe. Tako se znebimo problemov s pravim vrstnim redom imenov in priimkov določene osebe kot je primer, ko uporabnik namesto imena in priimka najprej vnese priimek in šele nato ime. Ob več priimkih in imenih je seveda možnih kombinacij vrstnih redov še več, pravilna pa je samo ena.
Orodje v naslednjem koraku preveri na vseh domenah vse možne permutacije besed (torej vse možne vrste rede imenov in priimkov vpisane osebe).
Vse najdene AD uporabniške račune shranjuje v podatkovno strukturo Dictionary (slo. Slovar), kjer za ključ vnosa v slovar vzame SID AD uporabnika.
To bo kasneje omogočalo lažje in predvsem hitrejše odstranjevanje najdenih uporabniških računov, ki jih je iskana oseba uporabljala v stari domeni pred migracijo na novo domeno.

Za migriranje uporabnikov na novo domeno uporabljamo orodje ADMT (Active Directory Migration Tool). Ta ob migriranju uporabnika na novo domeno v njegov nov account shrani prejšnji SID v atributu sIDHistory, kar nam omogoča, da enostavno ugotovimo, kateri account je uporabljal prej in ga torej ADUserAutoPicker ne prikaže ter s tem dodatno ne zmede uporabnika.

Če po vsem zgoraj opisanem ADUserAutoPicker najde natančno en zadetek iz AD imenika je torej dobil pravo osebo.
Če je najdenih zadetkov več, ponudi uporabniku možnost izbire pravega zadetka v PopUp oknu z dodatnimi podatki kot jih uporablja Outlook adresar (naziv, lokacija, oddelek, podjetje in vzdevek), iz katerih je izbira prave osebe definitivno lažja.
Če pa ne najde nobenega zadetka, shrani zgolj vpisan ime in priimek kot osebo, ki je ni v AD imeniku.

Za konec pa še delček kode – funkcija, ki v podani domeni poišče zadetke glede na podani filter iskanja. Zadetke shrani v slovar, zgodovino vseh SID-jev za vse zadetke pa shrani v skupni seznam, ki se ga kasneje uporabi ob brisanju odvečnih uporabniških računov ADUserAutoPicker-ja.

Zakaj vse to povezovanje z AD imenikom?
Avtomatsko zaznavanje prave osebe v AD imeniku (brez problemov zaradi več uporabniških računov ene osebe, ki so nastali ob migraciji na novo domeno in enostavnejšega iskanja prave osebe, če obstaja več oseb z enakim imenom in priimkom) prinaša lažje komuniciranje z njimi, saj iz AD imenika pridobimo njihove dodatne podatke (e-pošta, IM, telefonska številka itd.).
Ob uporabi programa Lync pa lahko v SharePointu začnemo z osebo komunicirati kar iz obrazca.

Lep pozdrav!
Gašper Rupnik

{End.}

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Powered by WordPress.com.

Up ↑

%d bloggers like this: