<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>User Profile arşivleri - Yunus Emre Araç</title>
	<atom:link href="https://www.yunusemrearac.com/tag/user-profile/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.yunusemrearac.com/tag/user-profile/</link>
	<description>SharePoint Consultant &#124; Microsoft 365 &#124; SharePoint Server &#38; Online</description>
	<lastBuildDate>Thu, 14 Oct 2021 19:37:30 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>

<image>
	<url>https://www.yunusemrearac.com/wp-content/uploads/2014/11/MetroUI_VisualStudio_2012-545c8860_site_icon-32x32.png</url>
	<title>User Profile arşivleri - Yunus Emre Araç</title>
	<link>https://www.yunusemrearac.com/tag/user-profile/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">67294213</site>	<item>
		<title>SharePoint User Profile Service Oluşturulurken Alınan &#8220;Invalid column name &#8216;RecordId&#039;&#8221; Hatası ve Çözümü</title>
		<link>https://www.yunusemrearac.com/2021/02/21/sharepoint-user-profile-service-olusturulurken-alinan-invalid-column-name-recordid-hatasi-ve-cozumu/</link>
					<comments>https://www.yunusemrearac.com/2021/02/21/sharepoint-user-profile-service-olusturulurken-alinan-invalid-column-name-recordid-hatasi-ve-cozumu/#respond</comments>
		
		<dc:creator><![CDATA[yunusemrearac]]></dc:creator>
		<pubDate>Sun, 21 Feb 2021 10:36:12 +0000</pubDate>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Central Administration]]></category>
		<category><![CDATA[Invalid column name 'RecordId']]></category>
		<category><![CDATA[mc.RecordId]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[profilesrp.sql]]></category>
		<category><![CDATA[RecordId]]></category>
		<category><![CDATA[SharePoint Central Administration]]></category>
		<category><![CDATA[SharePoint Products Configuration Wizard]]></category>
		<category><![CDATA[SharePoint User Profile]]></category>
		<category><![CDATA[User Profile]]></category>
		<category><![CDATA[User Profile Service Application]]></category>
		<guid isPermaLink="false">http://yunusemrearac.com/?p=2710</guid>

					<description><![CDATA[<p>Merhaba arkadaşlar bugün sizlere SharePoint ortamında kullanıcı servisi olan user profile servis oluşturken karşınıza çıkabilecek bir hatadan ve bu hatanın çözümünden bahsedeceğim. Bu hata user&#8230;</p>
<p>The post <a href="https://www.yunusemrearac.com/2021/02/21/sharepoint-user-profile-service-olusturulurken-alinan-invalid-column-name-recordid-hatasi-ve-cozumu/">SharePoint User Profile Service Oluşturulurken Alınan &#8220;Invalid column name &#8216;RecordId&#039;&#8221; Hatası ve Çözümü</a> appeared first on <a href="https://www.yunusemrearac.com">Yunus Emre Araç</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Merhaba arkadaşlar bugün sizlere SharePoint ortamında kullanıcı servisi olan user profile servis oluşturken karşınıza çıkabilecek bir hatadan ve bu hatanın çözümünden bahsedeceğim. Bu hata user profile service powershell, configuration wizard ya da central admin üzerinden oluşturmaya çalıştığınızda da karşınıza çıkabilecek bir hatadır ve herhangi bir oluşturma yöntemi ile de aşılamamaktadır.</p>
<p><a href="http://yunusemrearac.com/wp-content/uploads/2021/02/user-profile-service-record-id-error.png"><img fetchpriority="high" decoding="async" class="size-full wp-image-2711 aligncenter" src="https://yunusemrearac.com/wp-content/uploads/2021/02/user-profile-service-record-id-error.png" alt="" width="1389" height="508" srcset="https://www.yunusemrearac.com/wp-content/uploads/2021/02/user-profile-service-record-id-error.png 1389w, https://www.yunusemrearac.com/wp-content/uploads/2021/02/user-profile-service-record-id-error-300x110.png 300w, https://www.yunusemrearac.com/wp-content/uploads/2021/02/user-profile-service-record-id-error-1024x375.png 1024w, https://www.yunusemrearac.com/wp-content/uploads/2021/02/user-profile-service-record-id-error-768x281.png 768w" sizes="(max-width: 1389px) 100vw, 1389px" /></a></p>
<p>Yukarıda da göreceğiniz gibi hangi yöntemde deneyecek olursanız olun böyle bir hata verecek ve işlemi tamamlayamayacaksınız. Bu hatanın çözümü için aşağıdaki adımları takip ederek yapmanız gerekmektedir.</p>
<p>İlk olarak sharepoint sunucumuzda <strong>&#8220;C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\TEMPLATE\SQL\SPS&#8221;</strong> konumuna gidiyoruz. Burada yer alan <strong>&#8220;profilesrp.sql&#8221;</strong> dosyasının yedeğini alıyoruz.</p>
<p><a href="http://yunusemrearac.com/wp-content/uploads/2021/02/user-profile-service-record-id-solution-1.png"><img decoding="async" class="size-full wp-image-2712 aligncenter" src="https://yunusemrearac.com/wp-content/uploads/2021/02/user-profile-service-record-id-solution-1.png" alt="" width="753" height="355" srcset="https://www.yunusemrearac.com/wp-content/uploads/2021/02/user-profile-service-record-id-solution-1.png 753w, https://www.yunusemrearac.com/wp-content/uploads/2021/02/user-profile-service-record-id-solution-1-300x141.png 300w" sizes="(max-width: 753px) 100vw, 753px" /></a></p>
<p>Sonra yedeğini aldığımız bu <strong>&#8220;profilesrp.sql&#8221;</strong> dosyayı bir not editörü ile açarak düzenlememiz gerekmektedir. Burada iki tane yerde düzenleme yapmamız gerekiyor.</p>
<p>Birinci düzenleyeceğimiz yer <strong>16583</strong> nolu satırda yer alan sondaki <strong>&#8220;Recordid&#8221;</strong> değerini <strong>&#8220;RecordId&#8221;</strong> olarak değiştiriyoruz.</p>
<p><a href="http://yunusemrearac.com/wp-content/uploads/2021/02/user-profile-service-record-id-solution-2.png"><img decoding="async" class="size-full wp-image-2713 aligncenter" src="https://yunusemrearac.com/wp-content/uploads/2021/02/user-profile-service-record-id-solution-2.png" alt="" width="753" height="187" srcset="https://www.yunusemrearac.com/wp-content/uploads/2021/02/user-profile-service-record-id-solution-2.png 753w, https://www.yunusemrearac.com/wp-content/uploads/2021/02/user-profile-service-record-id-solution-2-300x75.png 300w" sizes="(max-width: 753px) 100vw, 753px" /></a></p>
<p>İkinci düzenleyeceğimiz yer ise <strong>16635</strong> nolu satırda yer alan <strong>&#8220;mc.Recordid&#8221;</strong> değişkenini <strong>&#8220;mc.RecordId&#8221;</strong> olarak değiştirmek olacaktır.</p>
<p><a href="http://yunusemrearac.com/wp-content/uploads/2021/02/user-profile-service-record-id-solution-3.png"><img decoding="async" class="size-full wp-image-2714 aligncenter" src="https://yunusemrearac.com/wp-content/uploads/2021/02/user-profile-service-record-id-solution-3.png" alt="" width="949" height="142" srcset="https://www.yunusemrearac.com/wp-content/uploads/2021/02/user-profile-service-record-id-solution-3.png 949w, https://www.yunusemrearac.com/wp-content/uploads/2021/02/user-profile-service-record-id-solution-3-300x45.png 300w, https://www.yunusemrearac.com/wp-content/uploads/2021/02/user-profile-service-record-id-solution-3-768x115.png 768w" sizes="(max-width: 949px) 100vw, 949px" /></a></p>
<p>Bu değişiklikleri sorunsuz bir şekilde tüm sunucularda tamamlayıp kaydettikten sonra tekrar herhangi bir yöntem ile sharepoint user profile service oluştumayı deneyebilirsiniz. Bu hayatı almayacak ve sorunsuz bir şekilde tamamlandığını göreceksiniz.</p>
<p>The post <a href="https://www.yunusemrearac.com/2021/02/21/sharepoint-user-profile-service-olusturulurken-alinan-invalid-column-name-recordid-hatasi-ve-cozumu/">SharePoint User Profile Service Oluşturulurken Alınan &#8220;Invalid column name &#8216;RecordId&#039;&#8221; Hatası ve Çözümü</a> appeared first on <a href="https://www.yunusemrearac.com">Yunus Emre Araç</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.yunusemrearac.com/2021/02/21/sharepoint-user-profile-service-olusturulurken-alinan-invalid-column-name-recordid-hatasi-ve-cozumu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2710</post-id>	</item>
		<item>
		<title>SharePoint Online&#8217;da Konsol Uygulaması Kullanarak Kullanıcı Profillerini ( User Profile ) Güncelleme</title>
		<link>https://www.yunusemrearac.com/2019/01/16/sharepoint-onlineda-konsol-uygulamasi-kullanarak-kullanici-profillerini-user-profile-guncelleme/</link>
					<comments>https://www.yunusemrearac.com/2019/01/16/sharepoint-onlineda-konsol-uygulamasi-kullanarak-kullanici-profillerini-user-profile-guncelleme/#respond</comments>
		
		<dc:creator><![CDATA[yunusemrearac]]></dc:creator>
		<pubDate>Wed, 16 Jan 2019 12:17:42 +0000</pubDate>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[App.Config]]></category>
		<category><![CDATA[clientContext]]></category>
		<category><![CDATA[ConfigurationManager]]></category>
		<category><![CDATA[Console Application]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft.SharePoint.Client]]></category>
		<category><![CDATA[Microsoft.SharePoint.Client.Runtime]]></category>
		<category><![CDATA[Microsoft.SharePoint.Client.UserProfiles]]></category>
		<category><![CDATA[PeopleManager]]></category>
		<category><![CDATA[SetSingleValueProfileProperty]]></category>
		<category><![CDATA[SharePoint Administrator]]></category>
		<category><![CDATA[SharePoint Online]]></category>
		<category><![CDATA[System.configuration]]></category>
		<category><![CDATA[User Account Name]]></category>
		<category><![CDATA[User Profile]]></category>
		<guid isPermaLink="false">http://yunusemrearac.com/?p=1860</guid>

					<description><![CDATA[<p>Merhaba arkadaşlar bugün sizlere sharepoint online üzerinde user profile tarafında istenilen bir kullanıcının herhangi bir özelliğini konsol uygulaması kullanarak nasıl güncelleyebileceğimizden bahsedeceğim. Tabi ki çoğu&#8230;</p>
<p>The post <a href="https://www.yunusemrearac.com/2019/01/16/sharepoint-onlineda-konsol-uygulamasi-kullanarak-kullanici-profillerini-user-profile-guncelleme/">SharePoint Online&#8217;da Konsol Uygulaması Kullanarak Kullanıcı Profillerini ( User Profile ) Güncelleme</a> appeared first on <a href="https://www.yunusemrearac.com">Yunus Emre Araç</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Merhaba arkadaşlar bugün sizlere sharepoint online üzerinde user profile tarafında istenilen bir kullanıcının herhangi bir özelliğini konsol uygulaması kullanarak nasıl güncelleyebileceğimizden bahsedeceğim.</p>
<p>Tabi ki çoğu şeyde olduğu gibi bu taraftada sharepoint server side tarafa göre değişikşikler yer almaktadır.</p>
<p>Visual studio üzerinde projemizi oluşturuyoruz. İlk olarak oluşturmuş olduğumuz projeye aşağıdaki referansları eklememiz gerekiyor.</p>
<ul>
<li><strong>Microsoft.SharePoint.Client</strong> ( Version : 16.0.0.0 )</li>
<li><strong>Microsoft.SharePoint.Client.Runtime</strong> ( Version : 16.0.0.0 )</li>
<li><strong>Microsoft.SharePoint.Client.UserProfiles</strong> ( Version: 16.0.0.0 )</li>
<li><strong>System.Configuration</strong> ( Version : 4.0.0.0 ) — Bu referans ise App.config dosyasından AppSettings ile online  erişim bilgilerimizi dinamik olarak alabilmemiz için.</li>
</ul>
<p>Bu referansları projemize dahil ettikten sonra her zamanki gibi sharepoint online tarafında login olamız için static şekilde verilere erişebilmemiz daha rahat olacağı için App.config tarafında erişim bilgilerimizi alacağız.</p>
<p><strong>NOT:</strong> Yalnız burada bir farkımız olacak bu da sharepoint online tarafta biz user profile kısmından kullanıcılar erişmemiz gerekeceği için bizim sharepoint online sitemize değil sharepoint online administrator tarafına bağlanmamız gerekecektir ve bağlanılacak kullanıcı bilgisinin tanent admin gibi burada değişiklik yapabilme yetkilerine sahip olması gerekiyor. Site adresi olarak ise <strong>&#8220;https://yunusemrearac-admin.sharepoint.com/&#8221;</strong> şeklinde admin adresi olacaktır.</p><pre class="urvanov-syntax-highlighter-plain-tag">&lt;appSettings&gt;
    &lt;add key="TenantAdministrationUrl" value=""/&gt;
    &lt;add key="TenantAdminLoginName" value=""/&gt;
    &lt;add key="TenantAdminPassword" value=""/&gt;
  &lt;/appSettings&gt;</pre><p>App config tarafında yukarıdaki gibi tanımlamalarımızı dediğim şartlara uygun şekilde yaparak değerlerimizi giriyoruz ve bunları kod tarafında okumamız gerekecektir.</p><pre class="urvanov-syntax-highlighter-plain-tag">string tenantAdministrationUrl = ConfigurationManager.AppSettings["TenantAdministrationUrl"].ToString();
string tenantAdminLoginName = ConfigurationManager.AppSettings["TenantAdminLoginName"].ToString();
string tenantAdminPassword = ConfigurationManager.AppSettings["TenantAdminPassword"].ToString();</pre><p>Kod tarafında yukarıdaki gibi bu app config tarafına tanımladığımız değerleri alarak değişkenlerimize atama yapıyoruz. Daha sonra bu bilgiler ile sisteme giriş yapıyoruz.</p><pre class="urvanov-syntax-highlighter-plain-tag">using (ClientContext clientContext = new ClientContext(tenantAdministrationUrl))
{
    SecureString passWord = new SecureString();

    foreach (char c in tenantAdminPassword.ToCharArray()) passWord.AppendChar(c);

    clientContext.Credentials = new SharePointOnlineCredentials(tenantAdminLoginName, passWord);
}</pre><p>Daha sonra bu aldığımız bilgiler ile ClientContext kullanarak sisteme giriş yapıyoruz. Bu konu ile ilgili detaylı yazımı okumak için <a href="http://yunusemrearac.com/2018/10/09/sharepoint-online-siteye-console-uygulamasi-kullanarak-baglanmak/" target="_blank" rel="noopener">tıklayınız.</a></p>
<p>Bu kısımda değişiklik yapacağımız kullanıcının <strong>User Account Name</strong> bilgisi gerekmektedir. Bu kısımda aslında kullanıcının mail adresinin başına<strong> &#8220;i:0#.f|membership|&#8221;</strong> tanımlamasının eklenmesi yapılarak oluşturulmuş bir değerdir. Bundan dolayı da değişiklik yapmak istenilen kullanıcının sadece mail adresi üzerinden gidilebilir.</p><pre class="urvanov-syntax-highlighter-plain-tag">string UserAccountName = "i:0#.f|membership|" + email;</pre><p>Kod kısmında kullanıcının mail adresini account name olarak çevirebileceğim bir tanımlamayı da yukarıdaki gibi ekliyorum.</p>
<p>Daha sonra da <strong>PeopleManager</strong>  üzerinde yer alan <strong>SetSingleValueProfileProperty</strong> metodunu kullanarak kullanıcı account name, property adı ve değerini yollayarak gerekli güncellememizi yapıyoruz.</p><pre class="urvanov-syntax-highlighter-plain-tag">PeopleManager peopleManager = new PeopleManager(clientContext);

peopleManager.SetSingleValueProfileProperty(UserAccountName, property, value);

clientContext.ExecuteQuery();</pre><p>Bu kısımda daha kolay bir şekilde ilerleyebilmek için tüm bu işlemleri ben bir method haline getirdim ve hepsini bir araya topladığımda aşağıdaki gibi bir method oluşmaktadır.</p><pre class="urvanov-syntax-highlighter-plain-tag">public static bool UpdateSharepointOnlineUserProfileProperty(string email, string property, string value)
{
    bool updateResult = false;
    try
    {
        string tenantAdministrationUrl = ConfigurationManager.AppSettings["TenantAdministrationUrl"].ToString();
        string tenantAdminLoginName = ConfigurationManager.AppSettings["TenantAdminLoginName"].ToString();
        string tenantAdminPassword = ConfigurationManager.AppSettings["TenantAdminPassword"].ToString();

        string UserAccountName = "i:0#.f|membership|" + email;

        using (ClientContext clientContext = new ClientContext(tenantAdministrationUrl))
        {
            SecureString passWord = new SecureString();

            foreach (char c in tenantAdminPassword.ToCharArray()) passWord.AppendChar(c);

            clientContext.Credentials = new SharePointOnlineCredentials(tenantAdminLoginName, passWord);

            PeopleManager peopleManager = new PeopleManager(clientContext);

            peopleManager.SetSingleValueProfileProperty(UserAccountName, property, value);

            clientContext.ExecuteQuery();

            updateResult = true;
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine("Sharepoint User Property güncellenirken hata oluştu. User Email : " + email + " Error : ");
        Console.WriteLine(ex.Message);
        Console.WriteLine(ex.StackTrace);
    }

    return updateResult;
}</pre><p>Bunun yanı sıra kodun çalışan hali için aşağıdaki güthub adresinden indirebilirsiniz.</p>
<p><a href="https://github.com/yunusemrearac/SharepointOnlineUserProfilePropertyUpdate" target="_blank" rel="noopener"><img decoding="async" class="alignnone wp-image-1789 size-medium" src="https://yunusemrearac.com/wp-content/uploads/2018/10/Github-source-code-downloa-300x120.png" alt="" width="300" height="120" srcset="https://www.yunusemrearac.com/wp-content/uploads/2018/10/Github-source-code-downloa-300x120.png 300w, https://www.yunusemrearac.com/wp-content/uploads/2018/10/Github-source-code-downloa-768x306.png 768w, https://www.yunusemrearac.com/wp-content/uploads/2018/10/Github-source-code-downloa-1024x408.png 1024w, https://www.yunusemrearac.com/wp-content/uploads/2018/10/Github-source-code-downloa.png 1254w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>The post <a href="https://www.yunusemrearac.com/2019/01/16/sharepoint-onlineda-konsol-uygulamasi-kullanarak-kullanici-profillerini-user-profile-guncelleme/">SharePoint Online&#8217;da Konsol Uygulaması Kullanarak Kullanıcı Profillerini ( User Profile ) Güncelleme</a> appeared first on <a href="https://www.yunusemrearac.com">Yunus Emre Araç</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.yunusemrearac.com/2019/01/16/sharepoint-onlineda-konsol-uygulamasi-kullanarak-kullanici-profillerini-user-profile-guncelleme/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1860</post-id>	</item>
		<item>
		<title>SharePoint Online&#8217;da Konsol Uygulamasıyla Kullanıcı Profillerinde ( User Profile ) Filitreliyerek ya da Arama yaparak Kullanıcıları ve Özelliklerini ( User and Properties ) Getirmek</title>
		<link>https://www.yunusemrearac.com/2019/01/11/sharepoint-onlineda-konsol-uygulamasiyla-kullanici-profillerinde-user-profile-filitreliyerek-ya-da-arama-yaparak-kullanicilari-ve-ozelliklerini-user-and-properties-getirmek/</link>
					<comments>https://www.yunusemrearac.com/2019/01/11/sharepoint-onlineda-konsol-uygulamasiyla-kullanici-profillerinde-user-profile-filitreliyerek-ya-da-arama-yaparak-kullanicilari-ve-ozelliklerini-user-and-properties-getirmek/#respond</comments>
		
		<dc:creator><![CDATA[yunusemrearac]]></dc:creator>
		<pubDate>Fri, 11 Jan 2019 09:43:09 +0000</pubDate>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[App.Config]]></category>
		<category><![CDATA[clientContext]]></category>
		<category><![CDATA[clientContext.Credentials]]></category>
		<category><![CDATA[ConfigurationManager.AppSettings]]></category>
		<category><![CDATA[Console Application]]></category>
		<category><![CDATA[Github]]></category>
		<category><![CDATA[KeywordQuery]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft.SharePoint.Client]]></category>
		<category><![CDATA[Microsoft.SharePoint.Client.Runtime]]></category>
		<category><![CDATA[Microsoft.SharePoint.Client.Search]]></category>
		<category><![CDATA[Program.cs]]></category>
		<category><![CDATA[SearchExecutor]]></category>
		<category><![CDATA[SharePoint Online]]></category>
		<category><![CDATA[SharePoint Search]]></category>
		<category><![CDATA[SharePoint User Profile]]></category>
		<category><![CDATA[SharepointOnlineUrl]]></category>
		<category><![CDATA[SharepointOnlineUserEmail]]></category>
		<category><![CDATA[SharepointOnlineUserPassword]]></category>
		<category><![CDATA[System.configuration]]></category>
		<category><![CDATA[User Profile]]></category>
		<guid isPermaLink="false">http://yunusemrearac.com/?p=1856</guid>

					<description><![CDATA[<p>Merhaba arkadaşlar, daha önceden ihtiyacınız olduğu zaman araştırdığınız zaman görmüş olabilirsiniz ya da yeni araştırıyorsanız ve bilginiz yoksa haberiniz olsun SharePoint Online üzerinde SharePoint Server&#8230;</p>
<p>The post <a href="https://www.yunusemrearac.com/2019/01/11/sharepoint-onlineda-konsol-uygulamasiyla-kullanici-profillerinde-user-profile-filitreliyerek-ya-da-arama-yaparak-kullanicilari-ve-ozelliklerini-user-and-properties-getirmek/">SharePoint Online&#8217;da Konsol Uygulamasıyla Kullanıcı Profillerinde ( User Profile ) Filitreliyerek ya da Arama yaparak Kullanıcıları ve Özelliklerini ( User and Properties ) Getirmek</a> appeared first on <a href="https://www.yunusemrearac.com">Yunus Emre Araç</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Merhaba arkadaşlar, daha önceden ihtiyacınız olduğu zaman araştırdığınız zaman görmüş olabilirsiniz ya da yeni araştırıyorsanız ve bilginiz yoksa haberiniz olsun SharePoint Online üzerinde SharePoint Server Side gibi direk dll userinden SharePoint UserProfile servisini kullanamıyoruz ve bundan dolayı SharePoint online üzerinde direk olarak sharepoint kullanıcılarına erişip onları alamıyoruz.</p>
<p>Peki sharepoint online tarafında kullanıcıları çekmek ya da kullanıcı özelliklerine ihtiyacınız olduğu zaman nasıl yapacağız. Bu kısımda da yardımımıza search yetişmektedir. Search yapısını kullanarak direk sharepoint kullanıcıları üzerine sorgu atabilir ve istediğiniz kullanıcılar ve özelliklerini alabilirsiniz. Buradaki tek dez avantaz kullanıcılarda güncellenen değerlerin güncel olarak gelmesi SharePoint Online tarafındanki search yansıma hızına göre size de yansıması gecikecektir.</p>
<p>İlk olarak visual studio üzerinde açmış olduğunuz konsol uygulamamıza gerekli olan referanslarımızı ekliyoruz.</p>
<ul>
<li><strong>Microsoft.SharePoint.Client</strong> ( Version : 16.0.0.0 )</li>
<li><strong>Microsoft.SharePoint.Client.Runtime</strong> ( Version : 16.0.0.0 )</li>
<li><strong>Microsoft.SharePoint.Client.Search</strong> ( Verison : 16.0.0.0 ) &#8212; <strong>Not:</strong> Direk referanslar arasında aradığınız da bulamayabilirsiniz. Referans eklerken arama butonuna tıklayıp Microsoft.SharePoint.Client dosya konumuna gidip oradan seçerek eklemeniz gerekecektir.</li>
<li><strong>System.Configuration</strong> ( Version : 4.0.0.0 ) &#8212; Bu referans ise App.config dosyasından AppSettings ile online  erişim bilgilerimizi dinamik olarak alabilmemiz için.</li>
</ul>
<p>Projemize yukarıdaki referanslarımızı ekledikten sonra <strong>App.config</strong> dosyamıza giderek kullanacağımız dinamik verilerimizi burada tanımlamamız gerekiyor.</p><pre class="urvanov-syntax-highlighter-plain-tag">&lt;appSettings&gt;
    &lt;add key="SharepointOnlineUrl" value=""/&gt;
    &lt;add key="SharepointOnlineUserEmail" value=""/&gt;
    &lt;add key="SharepointOnlineUserPassword" value=""/&gt;
&lt;/appSettings&gt;</pre><p></p>
<ul>
<li><strong>SharepointOnlineUrl</strong> : Sharepoint online site url adresi</li>
<li><strong>SharepointOnlineUserEmail</strong> : Sharepoint online kullanıcı email adresi</li>
<li><strong>SharepointOnlineUserPassword</strong> : Sharepoint online kullanıcı şifresi</li>
</ul>
<p>Bu verileri value içinde bağlantı bilgilerini yazarak dosyamıza ekliyoruz. Daha sonra <strong>Program.cs</strong> dosyamıza gelerek kodumuzu yazmaya başlıyoruz.</p>
<p>İlk olarak App.config dosyamıza yazdığımız bilgileri okuyarak değişkenlerimize atamasını yapıyoruz.</p><pre class="urvanov-syntax-highlighter-plain-tag">string SharePointOnlineUrl = ConfigurationManager.AppSettings["SharepointOnlineUrl"].ToString();
string SharePointOnlineUserLoginName = ConfigurationManager.AppSettings["SharepointOnlineUserEmail"].ToString();
string SharePointOnlineUserPassword = ConfigurationManager.AppSettings["SharepointOnlineUserPassword"].ToString();</pre><p>Bu değerleri okuduktan sonra kullanıcılarımızdan alacağımız bilgileri bir model ile yada tek bir bilgi ile mi alacağımıza göre bir liste oluşturuyoruz. Burada ben sadece gelen kullanıcıların <strong>&#8220;WorkEmail&#8221;</strong> property alanlarını alacağım için bana model değil string bir liste yeterli gelecektir.</p><pre class="urvanov-syntax-highlighter-plain-tag">List&lt;string&gt; SharePointSearchUserList = new List&lt;string&gt;();</pre><p>Bundan sonraki adımda <strong>ClientContext</strong> ile sharepoint online sitemize bağlanarak işlemlerimize devam etmemiz kaldı. Bu aşamadan sonraki işlemler clientcontext içerisinde geçeceği için using ile clientcontext kod aralığımızı oluşturuyoruz ve tüm kodumuzu bu alan içerisinde yazmaya devam ediyoruz.</p><pre class="urvanov-syntax-highlighter-plain-tag">using (ClientContext clientContext = new ClientContext(SharePointOnlineUrl))
 {
    // Code
 }</pre><p>Sitemize tam olarak erişebilmek için kullanıcı adı ve şifre ile online sitemize login olmamız gerekmektedir. Aşağıdaki kod ile bu işlemi yapıyoruz. Bununla ilgili detaylı blog yazımı okumak için <a href="http://yunusemrearac.com/2018/10/09/sharepoint-online-siteye-console-uygulamasi-kullanarak-baglanmak/" target="_blank" rel="noopener">tıklayınız.</a></p><pre class="urvanov-syntax-highlighter-plain-tag">SecureString passWord = new SecureString();

foreach (char c in SharePointOnlineUserPassword.ToCharArray()) passWord.AppendChar(c);

clientContext.Credentials = new SharePointOnlineCredentials(SharePointOnlineUserLoginName, passWord);</pre><p>Sitemize giriş yaptıktan sonra <strong>KeywordQuery</strong> kullanarak search query mizi oluşturarak sorgu atmamız gerekecektir.</p>
<p>Bu nokta da dikkat etmemiz gereken bir nokta ise tek sefer de bir sorgudan bize en fazla <strong>500</strong> tane sonuç dönmektedir. Sizin sorgu sonucunuz bu sayıdan fazla olacak ise burada bir daha sorgu atarak gelecek sonucun başlangıç indexinin önceki çektiğimiz verilerin son verinin indexi olması gerekmektedir. bunun içinde KeywordQuery query imize <strong>StartRow</strong> diye bir değişkende atamamız gerekmektedir.</p>
<p>Burada genellkle gelecek sayı her zaman bilinemez ve her ihtimale göre çalışabilmesi için ben while kullanarak son gelen datanın 500 den küçük sayıda olana kadar devamlı sorgu atmasını sağlayıp gelen sayıya bağlı olmadan sorunsuz şekilde tüm verimi çekebileceğim.</p><pre class="urvanov-syntax-highlighter-plain-tag">int searchCount = 0;
int cs = 500;

while (cs &gt; 499)
{
    cs = 0;

    KeywordQuery query = new KeywordQuery(clientContext);
    query.QueryText = "RefinableInt00:1";  // Change your user filter query
    query.SourceId = new Guid("B09A7990-05EA-4AF9-81EF-EDFAB16C4E31");
    query.RowLimit = 500;
    query.StartRow = searchCount;

    SearchExecutor search = new SearchExecutor(clientContext);


    ClientResult&lt;ResultTableCollection&gt; results = search.ExecuteQuery(query);
    clientContext.ExecuteQuery();


    foreach (var resultRow in results.Value[0].ResultRows)
    {
        SharePointSearchUserList.Add(Convert.ToString(resultRow["WorkEmail"]));
        cs++;
    }

    searchCount += cs;
}</pre><p>Buradaki kodu açıklayacak olursak;</p>
<ul>
<li><strong>searchCount</strong> : Bu parametre bizim eğer gelecek sonucumuz 500 den büyük ise bir sonraki sorgumuz da hangi indexten başlayacağımızı tutacağımız değişken olacaktır. İlk olarak sıfır dan başlayacağı için ilk değeri sıfır olarak tanımlanmıştır.</li>
<li><strong>cs</strong> : Bu parametre ise bizim o anki sorgumuzdan gelen sayının bir sonraki sorguya ihtiyacımız olup olmayacağını anlamamız için kullanacağımız bir değişken. Ben değeri sınırda tuttuğum için ve ehile koşulum en az 500 olması gerektiği için ilk değerimi 500 olarak tanımlıyorum. Sonrasında while döngüsüne girer girmez bu değişkeni sıfırlıyorum ki o anki sorguda gelecek olan verilerimin sayısını tutabileyim. Birde her gelen sayı içinde bu değişkenimi bir değer arttırıyorum. Gelen değer sayım bittiğinde 500 den küçükse eğer daha sorgu atmama gerek kalmadığını anlayıp while döngüsünden çıkacağım.</li>
<li><strong>QueryText</strong> : Burada sharepoint search için yapacağım sorguyu text olarak tanımlıyorum. Ben burada <strong>RefinableInt00</strong> user profile propetrisinin 1 olan kullanıcıları için filtreliyorum. Bu kısım sizin ihtiycınıza ve sorgunuza göre değişecektir.</li>
<li><strong>SourceId</strong> : Burada benim sorgu atacağım ve ihtiyacım olan veri türü sharepoint user profile people olduğu için ona uygun id yi guid olarak veriyorum. Bu Source Id değerlerini ve çeşitliliği için yazdığım blog yazısı için <a href="http://yunusemrearac.com/2019/01/07/sharepoint-pnp-js-core-search-yapisinda-arama-yapilmasini-istedigimiz-alani-ozellestirmemize-yarayan-sourceid-parametre-degerleri-ve-karsiliklari/" target="_blank" rel="noopener">tıklayınız.</a></li>
<li><strong>RowLimit</strong> : Bu kısım yapacağınız sorguda gelmesini istediğiniz öğe sayısını belirtiyorsunuz. Dediğim gibi eğer 500 limitine takılmak istemiyorsanız ve bu yapıyı kullanacaksanız buraya <strong>cs</strong> değişkeninin ilk değerini tanımlamanız gerekmektedir. Ondan dolayı bende 500 olarak tanımladım.</li>
<li><strong>StartRow</strong> : Bu değişken ise eğer birden fazla sorgu atacak iseniz bu alanda sonraki sorguların hangi indexten başlayacağını belirteceğimiz parametreyi vermemiz gerekecektir. Bunun için tanımlamış olduğumuz searchCount değişkenini buraya tanımlıyoruz.</li>
</ul>
<p>Daha sonraki aşamada <strong>SearchExecutor</strong> ile searchümüzü oluşturup oluşturduğumuz query imizi buraya execute ediyoruz. Bize <strong>ResultTableCollection</strong> modelinde bir sonuç dönmektedir ve burada yukarıdaki gibi bir foreach ile istediğimiz kullanıcı özelliğini alabiliriz. Ben <strong>&#8220;WorkEmail&#8221;</strong> property sini almak istediğim için onu belirttim.</p>
<p>Gördüğümüz gibi bu şekilde herhangi birşeye takılmadan generic bir şekilde kodumuzu tamamlıyoruz ve istediğimiz gibi user profile üzerinden verilerimizi çekebiliyoruz.</p>
<p>Bu kodun tamamını GitHub adresinden indirebilirsiniz.</p>
<p><a href="https://github.com/yunusemrearac/SharePointOnlineGetSearchUser" target="_blank" rel="noopener"><img decoding="async" class="wp-image-1789 size-medium alignleft" src="https://yunusemrearac.com/wp-content/uploads/2018/10/Github-source-code-downloa-300x120.png" alt="" width="300" height="120" srcset="https://www.yunusemrearac.com/wp-content/uploads/2018/10/Github-source-code-downloa-300x120.png 300w, https://www.yunusemrearac.com/wp-content/uploads/2018/10/Github-source-code-downloa-768x306.png 768w, https://www.yunusemrearac.com/wp-content/uploads/2018/10/Github-source-code-downloa-1024x408.png 1024w, https://www.yunusemrearac.com/wp-content/uploads/2018/10/Github-source-code-downloa.png 1254w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>The post <a href="https://www.yunusemrearac.com/2019/01/11/sharepoint-onlineda-konsol-uygulamasiyla-kullanici-profillerinde-user-profile-filitreliyerek-ya-da-arama-yaparak-kullanicilari-ve-ozelliklerini-user-and-properties-getirmek/">SharePoint Online&#8217;da Konsol Uygulamasıyla Kullanıcı Profillerinde ( User Profile ) Filitreliyerek ya da Arama yaparak Kullanıcıları ve Özelliklerini ( User and Properties ) Getirmek</a> appeared first on <a href="https://www.yunusemrearac.com">Yunus Emre Araç</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.yunusemrearac.com/2019/01/11/sharepoint-onlineda-konsol-uygulamasiyla-kullanici-profillerinde-user-profile-filitreliyerek-ya-da-arama-yaparak-kullanicilari-ve-ozelliklerini-user-and-properties-getirmek/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1856</post-id>	</item>
	</channel>
</rss>
