Salı, Aralık 16, 2014

SharePoint Yetkilendirme - 1

Yetkilendirme SharePoint'in basit ama bir o kadar da en önemli kavramlarından bir tanesidir. SharePoint açsından baktığımızda oldukça kolay olan bu konunun aslında çok da bilinmediğini görmekteyiz. Yetkilendirme konusunu mümkün olduğunca detaylı olarak bir kaç post halinde ele alıyor olacağız. İlk olarak genel kavram ve açıklamalar ile başlayalım.

Talep: SharePoint üzerinde bize bir kullanıcı açar mısınız?

Yukarıdaki talep aslında her müşteriden size gelebilecek ve kolaylıkla yerine getirilecek bir talep gibi görünebilir ama sistemi incelediğimizde aslında bu talep yerine getirilemez. Talebin yerine getirilememesinin çok basit bir açıklaması var: SharePoint kendi üzerinde kullanıcı saklamaz. Daha önceki yazılarımızda Authentication ve Authorization kavramlarını ele almıştık. (http://burakbatur.blogspot.com.tr/2011/09/sharepoint-guvenlik-tipleri.html) Bir kez daha hatırlamak gerekirse:

Authentication: Kimlik denetimi anlamına gelmektedir. Yani kullanıcı gerçekten var mı? Kullanıcının kullanıcı adı doğru mu? Kullanıcının parolası doğru mu? Kullanıcının hesabı aktif mi? gibi soruların cevabını verecek olan kavram Authentication'dır.

Authorization: Yetkilendirme anlamına gelmektedir. Kullanıcı hangi işlemleri yapabilir? Kullanıcı hangi kütüphanelere erişebilir? Kullanıcının yazma yetkisi var mıdır? Kullanıcı dosya silebilir mi? gibi sorulara ise Authorization kavramı ile cevap verilir.

SharePoint'te yetkilendirme adı üzerinde Authorization ile başlar yani başka bir deyişle SharePoint kendi üzerinde kullanıcı adı ve parola saklamaz bunu başka sistemlerden bekler ve SharePoint üzerinde sadece var olan kullanıcıya ya da gruba yetki verilir. Peki bu kullanıcılar nerede saklanıyor? SharePoint'te kullanıcıların Authenticate olabileceği yerin ayarını WebApplication düzeyinde yapabilirsiniz. Burada iki seçenek söz konusudur. Bunlardan bir tanesi Claims Based Authentication, diğeri de Windows Authentication'dır. Eğer Windows aktif ise kullanıcıları sadece AD'den Authenticate ettirebilirsiniz. Güvenlik tipiniz Claims ise hem AD'den hem de Forms Authentication alt yapısı ile N sayıda kaynaktan kullanıcılarınızı Authenticate ettirebilirsiniz. Güncel versiyon olan 2013'de varsayılan tipimiz Claims Based Authentication'dır. Bu tipin 2010'daki varsayılanı Windows Authentication'dı 2013'de bu değişti!

Yetkilendirme işlemine Local Windows Gruplarından başlayıp, Web Application ile devam edebilirsiniz hemen ardından Site Collection düzeyinde bir yetkimiz daha mevcuttur. Top Level Site'a geçtikten sonra ise Web düzeyinde, List ya da Library düzeyinde ve SubWeb düzeyinde yetkiler devreye girer. List ya da Libray içinde girdiğimizde de Klasör ve öğe üzerinde yetkilendirmeye kadar girebilirsiniz. Dikkat ederseniz aslında SharePoint'in hiyerarşisi üzerinden hızlıca geçmiş olduk, yetkilendirme adımlarında da bu hiyerarşi çok çok önemlidir.

İlerleyen yazılarımızda her seviyedeki yetki seviyesini ve üstten yetki devralma ya da özel izin kavramlarını ele alıyor olacağız.

Perşembe, Kasım 27, 2014

SharePoint User Information List

SharePoint sizin gördüğünüzün yanında arka planda çok fazla gizli liste barındırmaktadır. Bunlardan bir tanesi de User Information List'tir. Bu liste sistemde oturum açan kullanıcıların bilgilerini saklar ve kullanıcı detayına tıkladığınızda eğer MySite'lar aktif değilse kullanıcı bilgilerini bu liste üzerinden görüntülersiniz. Tüm listeye erişmek için herhangi bir site üzerinde /_catalogs/users/detail.aspx Rekative URL'ini kullanabilirsiniz.

Bu liste User Profile Synchronization Service tarafından her senkronizasyonda güncellenir ancak senkronizasyonda problem varsa ara ara bu listeye manuel müdahale etmeniz gerekebilir. Bu senaryoda aşağıdaki kod bloğunu SharePoint Power Shell arayüzü ile kullanabilirsiniz. Biz aşağıdaki örnekte sadece E-Mail alanını ele aldık ama liste detaylarından sütunlara göz atıp istediğiniz herhangi bir özelliği de değiştirebilirsiniz.

$site = Get-SPSite "http://SiteCollectionURL"
$web = $site.RootWeb
$list = $web.Lists["User Information List"]


$item = $list.Items | where {$_["Account"] -eq "domain\userName"}

$item["Work e-mail"] = deneme@deneme.com

$item.update()

$web.Dispose()
$site.Dispose()

Cumartesi, Eylül 20, 2014

SharePoint Teknik Diyagramları!

Hepimiz proje geliştirmeye başlamadan önce dizayn adımında duruma üstten bakmak isteriz, genel anlamdaki pek çok senaryoyu görebileceğiniz hatta poster boyutunda indirebileceğiniz SharePoint çözüm diyagramlarına https://technet.microsoft.com/en-us/library/cc263199(v=office.15).aspx adresinden ulaşabilirsiniz.

Perşembe, Ağustos 14, 2014

SharePoint Kod Örnekleri

SharePoint Development ile ilgili farklı senaryolardaki kod örnekleri Office Dev Center sitesi üzerinden sunulmaktadır, özellikle SharePoint üzerinde yazılım geliştirmeye yeni başladıysanız ya da kendinizi bu alanda farklı noktalarda geliştirmek istiyorsanız https://code.msdn.microsoft.com/sharepoint adresinizi ziyaret edebilirsiniz. 

Perşembe, Temmuz 10, 2014

SharePoint InfoPath Form Services Arayüzde Olmayan Özellikleri Listeleme

Her ne kadar geleceği çok parlak olmasa da pek çoğumuz için Microsoft Office InfoPath çoğu noktada hayat kurtaran bir uygulama olmuştur. Özellikle formlara Browser üzerinden erişip işlem yaptırmak, Client'larda herhangi bir şey kurulu olmadan aksiyon alıyor olmak ve çoğu işlemi de kod yazmadan kurallar ile işletmek gerçekten kulağa çok hoş geliyor. Proje ve kullanım oranı büyüdükçe çok güvendiğiniz SharePoint InfoPath Form servisleri zaman zaman size problem çıkarmaya başlar. Bu problemler uygulamanın tasarımı, sistem kaynaklarının yetersizliği gibi konulardan kaynaklanmakla birlikte zaman zaman da arka plandaki gizli ayarlardan kaynaklanıyor olabilir. Uygulamanız geniş kitlelere yayıldıkça zaman zaman varsayılan değerlerle oynamanız gerekebilir. SharePoint Central Administration ekranı üzerinden bir takım ayarlar ile oynayabiliyorsunuz ama asıl hayat kurtaran ayarlara PowerShell ile müdahale etmeniz gerekebilir. Bu işlemler oldukça basittir. 

InfoPath Form Services'in tüm ayarlarını görüntülemek için ilk olarak SharePoint Management Shell ekranını Run As Administrator seçeneği ile açalım ardından aşağıdaki kod ile InfoPath Form Services'in tüm ayarlarını görüntüleyebilirsiniz.

$SPInfopath=Get-SPInfoPathFormsService

$SPInfopath | Select *

Bu kodları çalıştırdığınızda ekranda aşağıdaki şekilde tüm ayarları ve bu ayarlara atanmış olan değerleri görüyor olacaksınız.

TypeName                                 : Forms Service
FormTemplates                            : ......
DefaultDataConnectionTimeout             : 10000
MemoryCacheSize                          : 250
MaxDataConnectionTimeout                 : 20000
MaxDataConnectionResponseSize            : 1500
MaxDataConnectionRoundTrip               : 20000
MaxFormLoadTime                          : 40000
RequireSslForDataConnections             : True
AllowEmbeddedSqlForDataConnections       : False
AllowUdcAuthenticationForDataConnections : False
AllowUserFormCrossDomainDataConnections  : True
AllowUserFormBrowserEnabling             : True
MaxSizeOfFormSessionState                : 4194304
MaxSizeOfUserFormState                   : 4194304
MaxPostbacksPerSession                   : 75
MaxUserActionsPerPostback                : 200
ActiveSessionsTimeout                    : 1440
AllowUserFormBrowserRendering            : True
AllowViewState                           : False
ViewStateThreshold                       : 40960
DataConnectionFiles                      : {}
ExemptUserAgents                         : {crawler, googlebot, ms search, msnb
                                           ot...}
Instances                                : {}
Applications                             : {}
Required                                 : False
JobDefinitions                           : {}
RunningJobs                              : {}
JobHistoryEntries                        : {}
CanUpgrade                               : True
IsBackwardsCompatible                    : True
NeedsUpgradeIncludeChildren              : False
NeedsUpgrade                             : False
UpgradeContext                           : Microsoft.SharePoint.Upgrade.SPUpgra
                                           deContext
Name                                     :
DisplayName                              :
Id                                       : c4211568-4ede-4e2f-81f1-******
Status                                   : Online
Parent                                   : SPFarm Name=SharePoint_Config_***
Version                                  : 1814277
Properties                               : {}
Farm                                     : SPFarm Name=SharePoint_Config_***

UpgradedPersistedProperties              : {}

Bu ayarlardan herhangi birini düzenlemek için aşağıdaki örnekteki gibi bir aksiyon alabilirsiniz. Örneğin biz bu örneğimizde DefaultDataConnectionTimeout değerini 10 000'den 20 000'e çekiyoruz.

$SPInfopath.DefaultDataConnectionTimeout = 20000

Yukarıdaki kodu çalıştırdığınızda değer direkt güncellenecektir. Tüm özellikleri tekrar listeleyerek sonuca göz atabilirsiniz. Bu arada hangi özelliği ne zaman değiştirmeniz gerekiyor? Buna tabiki siz direkt karar vermemelisiniz. Herhangi bir hata aldığınızda ilgili log dosyasına gidip hatayı analiz ettiğinizde SharePoint zaten size gerekli bilgiyi veriyor olacaktır. 

Cumartesi, Haziran 14, 2014

SharePoint 2013 Limitleri!

Her yazılımın olduğu gibi SharePoint'in de ilk çıktığı günden beri limitleri var. Bu limitler her versiyon ile değişmekle birlikte özellikle bir site hiyerarşisi kurgularken mutlaka kontrol edilmeli. SharePoint kullanan firmaların sistemleri incelendiğinde genellikle aşağıdaki hatalar ile karşılaşılıyor.
  • Tüm içerik tek bir Content Databese'inde yer alıyor ve bu DataBase'in boyutu çok büyük limitlere çıkmış.
  • Tüm dokümanlar tek bir doküman kütüphanesinde yer alıyor.
  • Her URL için yeni bir Web Application ve Application Pool oluşturulmuş ve böylece çok fazla WebApplication ortaya çıkmış.
Yukarıdaki örnekler tabi ki arttırılabilir ama dikkat edecek olursanız genellikle ortak noktaları limitler. Örnek vermek gerekirse SharePoint'in performanslı çalışabilmesi için doküman kütüphanesi başına tek bir view'da görüntülenecek 5000 dokümanı aşmayacak bir mimari kurmanız gerekiyor.
Content Database'lerinizin boyutu 200 GB'ı geçmemeli.
Sistemde maksimum 10 Application Pool ve 20 WebApplication olmalı.

Dikkat ederseniz burada genellikle olmalı kelimesini kullanıyoruz, yukarıda belirttiğimiz limitler aşılabilen şeylerdir ama zorunlu durumlar dışında aşılması önerilmez ve en önemlisi "desteklenmez" aşağıda paylaştığımız linkteki limitlerin pek çoğunun yanında "Supported" ifadesini göreceksiniz. Bu ifade bu limitin aşılabileceğini ama aşıldığı durumlarda sistemin UnSupported durumda olacağını belirler. Bu herhangi bir hata yokken sıkıntı olmamakla birlikte, bir problemde Microsoft'tan destek alamayabileceğiniz ve sorununuzun çözümsüz kalacağı anlamına gelir. Bu sebeple yeni bir mimari kurgularken aşağıdaki linkte yer alan limitleri dikkate almanızı ve her sistem mimarisi oluşturma öncesinde bu linki ziyaret etmenizi şiddetle öneririm.

SharePoint 2013'ün Yazılım limit ve kısıtlamalarına https://technet.microsoft.com/en-us/library/cc262787.aspx adresinden erişebilirsiniz

Pazartesi, Mart 31, 2014

User Profile Servis Senkronizasyonu Starting'de başlama problemi

SharePoint üzerinde User Profile Service denince akla ilk gelen senkronizasyon oluyor ve senkronizasyon servisini çalıştırmaya çalıştığınızda da en sık karşılaştığınız hatalardan bir tanesi servis durumunun Starting'de kalmasıdır. Burada ilk dikkat etmeniz gereken nokta servisin çalıştırılacağı hesabın AD üzerinde Replicate Directory Changes yetkisinin olması (Bu yetkinin verilmesi için http://technet.microsoft.com/en-us/library/hh296982.aspx adresindeki makaleden faydalanabilirsiniz.) ve Farm Admin hesabının makinede local admin olmasıdır tabi ki bu durumun çok fazla nedeni olabileceği için burada adım adım nedenlerini saymak yerine bu durumdan nasıl çıkaracağınızı anlatıyor olacağım detaylı bilgi için http://www.harbar.net/articles/sp2010ups2.aspx adresindeki makaleye de göz atmanızı öneririm.

Servisi Starting durumundan çıkarmak için aşağıdaki kodları SharePoint Power Shell Admin ekranı üzerinden çalıştırabilirsiniz. Burada çok dikkatli olmanız gereken bir şey var. Aşağıdaki kodlar sadece servisin durumunu değiştirmiyor senkronizasyon database'ini sıfırlıyor. Aşağıdaki kodlar çalıştıktan sonra yapmış olduğunuz tüm senkronizasyon ayarları sıfırlanacak ve her şeyi yeniden yapmanız gerekecektir, aşağıdaki kodları çalıştırmadan önce mutlaka senkronizasyon ayarlarınızı bir yere not edin, burada Backup işinize yaramaz çünkü zaten amacınız mevcut durumu yok etmek mevcut durumun Backup'ını almak yerine senkronizasyon ayarlarınızı bir yere not edin. Tabi bu işlemlerden önce farmdaki diğer ayarlar için Full Backup almanızı şiddetle tavsiye ederiz :)

$syncDBType = "Microsoft.Office.Server.Administration.SynchronizationDatabase"
$upaSAType = "User Profile Service Application"
$syncDB = Get-SPDatabase | where-object {$_.Type -eq $syncDBType}
$upa = Get-SPServiceApplication | where-object {$_.TypeName -eq $upaSAType}


$syncDB.Unprovision()
$syncDB.Status = "Offline"
$upa.ResetSynchronizationMachine()
$upa.ResetSynchronizationDatabase() 
$syncDB.Provision()


restart-service SPTimerV4

Perşembe, Mart 27, 2014

Bahçeşehir Üniversitesi SharePoint Semineri

Bu gün Bahçeşehir Üniversitesi'de düzenlenen etkinlikte SharePoint 2013 ve Office 365 anlatma fırsatı buldum, özellikle Office 365'in sağladığı kolaylıklar katılımcıların dikkatini çekti ve bu doğrultuda kafalardaki soru işaretlerini gidermeye çalıştık. Bu etkinlikten dolayı sevgili Onur Yazıcı ve Bahçeşehir Üniversitesi öğrencilerine çok teşekkürler. 

Çarşamba, Mart 12, 2014

SharePoint 2013 Sp1 Yayında

Microsoft SharePoint Server 2013 için Service Pack 1'i duyurdu. Service Pack içerisinde bu güne kadar olan tüm Update Pack'ler geliyor olacak. Service Pack'de göze çarpan en büyük değişiklik SkyDrive'ın One Drive olarak karşımıza çıkıyor olması ve Yammer ile daha kolay entegre olabiliyor olmak. Service Pack ile ilgili detaylı bilgiyi http://blogs.office.com/2014/03/03/sharepoint-server-2013-service-pack-1-now-available/ adresinden edinebilirsiniz.

Çarşamba, Şubat 12, 2014

Hata: We're still collecting the latest news. You may see more if you try again a little later.

SharePoint 2013'te Newsfeed'inize tıkladınız ve sizi We're still collecting the latest news. You may see more if you try again a little later. yazısı karşılıyor. Biraz hatta bir kaç gün beklediniz ve hala aynı yazı sizi karşılıyor ise bunun 2 neden olabilir. Ya gerçekten hiç kimse uzun süredir bir şey paylaşmamış ya da Distribute Cache servisininiz doğru çalışmıyor. ilk durum için aksiyon almanıza gerek yok ama ikinci durum için işler pek de iyi gitmiyor demektir. SharePoint 2013 Newsfeed performans gereksinimleri nedeni ile datayı size Cache'den getirir, Cache'den datanın gelmesinden sorumlu olan servis SharePoint 2013 Distrubute Cache servisidir ilk olarak bu servisin çalıştığından emin olmak gerekiyor burada işler oldukça kolaydır ve Central Admin sitesi üzerinden servisin çalışıp çalışmadığını görebilirsiniz.

Distribute Cache servisi çalışıyor ve hala aynı hatayı alıyorsanız arka plandaki servise göz atma zamanı gelmiş demektir. Distribute Cache servisi de arka planda AppFabric Caching Servisini kullanır. Bu servis bir Windows servisidir ve hatayı yakalamak için mutlaka AppFabric Caching servisine de göz atmanız gerekir, eğer çalışmıyorsa çalıştırın. Servisin çalıştırılmasının ardından göz atmanız gereken bir durum daha vardır. Distribute Cahce servisi birden fazla makine üzerinde çalıştırıldıysa arka planda bir Cache Cluster oluşur ve gerekli Cache'leme işlemleri Cluster üzerinden yürütülür. Cache Cluseter'ın doğru çalışıp çalışmadığını gözlemlemek için Power Shell ekranı üzerinden aşağıdaki kodu çalıştırın.

Get-CacheHost

Burada eğer hata dönüyorsa büyük ihtimalle Cache Cluster'ınız aktif değil ya da üzerinde bulunduğunuz sunucu Cache Cluster'ı kullanmıyor demektir. Cache Cluster'ı kullandırmak için aşağıdaki kodu kullanabilirsiniz. Tabi ki bu işlemleri Distribute Cache servisinin çalıştığı tüm makinelerde yapmanız gerekiyor.

Use-CacheCluster

Yukarıdaki kodun ardından tekrardan Get-CacheHost kodunu çalıştırın ve bu sefer eğer bir aksilik yoksa Cache Cluster'ı Cluster'a dahil olan sunucuları ve durumlarını görüyor olacaksınız. Eğer burada bir problem yoksa belli bir süre sonra Newsfeed'inizde o andan sonra paylaşılan Feed'ler geliyor olacaktır. Cache Cluster üzerinde faklı problemler söz konusu ise AppFabric Caching Service üzerindeki hatalara yoğunlaşmanız gerekiyor.

Cumartesi, Şubat 08, 2014

SharePoint Nasıl Yapılır: Doküman Kütüphanelerinde versiyonlama işlemleri

SharePoint'in kullanım amaçlarından biri de Doküman Yönetimi içindir, dokümanlarınızı yönetirken arka planda alt ve üst versiyonlarınızın oluşturulması için bir kaç ayar yapmanız gerekiyor. SharePoint eğer siz isterseniz dokümanlarınızın N sayıda versiyonunu sizin için arka planda saklayabilir ve aynı URL üzerinden her zaman size sizin görebileceğiniz son versiyonu servis eder. Sizin göreceğiniz son versiyon cümlemizi biraz daha açmak için ilk olarak SharePoint'in doküman versiyonlama mekanizması üzerinde konuşalım.

SharePoint dokümanların Major ve Minor versiyonlarını oluşturabilir. Major versiyonlar son kullanıcıların gördüğü yayınlanmış olan versiyonlar olarak nitelendirilirken Minor versiyonlar ise genellikle üzerinde çalışılan yani Draft versiyon olarak düşünülür. Doküman kütüphanesi üzerinde yer alan bir ayar ile Draft versiyonun son kullanıcılardan otomatik olarak gizlenmesini sağlayabilirsiniz ve siz doküman üzerinde çalışırken son kullanıcı sizin en son yayınladığınız Major versiyonu görmeye devam eder, yani yetki seviyenize göre aynı URL üzerinden size dokümanın görebileceğiniz son versiyonu servis edilir. Tabi burada SharePoint penceresinden baktığımızda Word, Excel, PowerPoint, ses, video ya da herhangi bir web sayfasının bir doküman olduğunu vurgulamakta fayda var, yani ShrePoint ile geliştirilmiş bir sitenin herhangi bir sayfası da bizim için bir doküman ve yukarıda açıkladığımız durum web sayfası için de geçerli, web sitesi geliştirirken de bu özellikten faydalanıp aşağıda açıklayacağımız işlemleri gerçekleştirebilirsiniz.

Herhangi bir kütüphanede versiyonlamayı aktif hale getirmek için Ribbon'dan Library Settings (Kütüphane Ayarları) bölümüne geçmeniz gerekiyor. Library Settings sayfasında sol bölümde yer alan Versioning Settings bölümünden gerekli ayarları yapabilirsiniz.

 
Versiyon ayarlarını daha geniş ele almak için sayfamızı en temelden ele almaya başlayalım. Bu sayfada yer alan en önemli özelliklerden bir tanesi de Content Approval özelliğidir. Versiyonlama özelliğinden bağımsız olarak açıp kapabileceğiniz Content Approval özelliği ile içeriklerin onaylı olarak yayınlanmasını sağlayabilirsiniz ve Content Approval'ı aktif ettiğinizde kütüphaneye o andan sonra upload edeceğiniz her doküman bir onaya sunulur ve onaysız dokümanlar son kullanıcılara servis edilmez. Onaysız dokümanlar sadece kütüphane üzerinde değil arama sonuçlarında da kesinlikle servis edilmez ve kritik bilgileriniz meraklı gözlerden korunmuş olur. Burada son kullanıcılar diye bahsettiğimiz hedef kitle sadece okuma hakkına sahip olan kullanıcılardır. Peki onayları kim verecek? Herhangi bir SharePoint sitesinde son kullanıcılara yetki verirken ya da izin seviyelerini ayarlarken Approvals şeklinde bir yetki görmüş olmalısınız Approve (Onay) yetkisi olan herhangi bir kullanıcı herhangi bir dokümanı onaylayabilir. Buradaki iş akışı tek seviye ve paralel bir iş akışıdır.
 
 
 
Document Version History bölümü ise dokümanlar üzerinde versiyonlama özelliğinin aktif olup olmayacağını belirttiğimiz bölümdür. Bu bölümde dikkat ederseniz iki farklı seviye söz konusu. İlk paragrafta da açıkladığımız gibi buradan Major ve Minor versiyonların aktif olup olmayacağını seçebiliyorsunuz. Sadece Major versiyoları aktif edip her verisiyonu bir öncekinin yedeği gibi düşünebilir ya da hem Major hem de Minor versiyonu aktif edip son kullanıcılar en son Major'u görürken siz yeni versiyon oluşturmak için aynı sayfa üzerinde çalışmalarınızı sürdürebilirsiniz. Seçmiş olduğunuz versiyonlama tipine göre alt taraftaki kutuların aktif olduğunu göreceksiniz, burada geriye dönük kaç Major ve Minor versiyonun saklanacağını belirtebiliyorsunuz. Bu bölümde kapasite planlaması açısından çok önemli bir bölümdür eğer gereksiz yere fazla versiyon saklarsanız diskinizin planladığınızdan daha önce dolduğunu göreceksiniz bu sebeple burada dokümanlarınızın kritiklik seviyesine göre bir limit vermeniz son derece anlamlıdır.



Draft Item Security bölümünden ise Minor versiyonların güvenlik seviyesini ve kimlere görüntüleneceğini belirtiyorsunuz. Bu bölüm dikkat ederseniz varsayılan olarak herkese açıktır ancak yapacağınız bir ayar ile sadece kütüphanede düzenleme yetkisine sahip kullanıcılar tarafından görüntülenmesini ya da onaylama ve o öğeyi en son güncelleyen kişi tarafından görüntülenmesini sağlayabilirsiniz.

Require Check Out özelliği ise doküman üzerinde birlikte çalışan kişilerin birbirlerinin değişikliklerini ezmemesini sağlayabilirsiniz. Yani bir kişi doküman üzerinde çalışacağı zaman dokümanı CheckOut yapıp kendi üzerine alabilir ve o kişi düzenlemeyi bitirip değişiklikleri CheckIn komutu ile sunucuya yükleyinceye kadar herkes ilgili dokümanı readonly görecektir. Bu özelliği Yes olarak ayarlayacak bu işlemi zorunlu hale getirebilirsiniz ki biz genellikle bu şekilde kullanmanızı öneririz.