SharePoint Arşiv

Workflow Manager Server Migration

Workflow Manager Server yüksek ölçekli, yüksek yoğunluklu iş akışlarını barındırmak için kullanılmakta olan bir teknolojidir. Bildirim tabanlı (declarative) bir modelde geliştirme yapmanıza izin verir. Yani geliştirdiğiniz iş akışlarında kod barınmaz, sadece deklerasyonları barınır. Arka plan sistemleri ile servisler üzerinden haberleşerek iş mantığının akışa uygulanması amaçlanır. Microsoft .Net Framework 4.5 ve Windows Workflow Foundation üzerinde inşa edilmiştir.

Workflow Manager’ın genel kullanımı Microsoft SharePoint Server üzerinde SharePoint Workflow’larını çalıştırmaya yöneliktir. Aslında Workflow Manager, SharePoint için yaratılmış bir yapı değildir ancak genel kullanımına baktığımızda ağırlıklı olarak SharePoint ürünü ile beraber kullanıldığını gözlemliyoruz.

Topolojik olarak bir farm mantığında çalışır. Yani tıpkı SharePoint veya Exchange Server farmlarında olduğu gibi ilk sunucu kurulumundan sonra bir farm yapılandırması gerçekleştirirsiniz. Ardından yeni sunucular üzerinde de uygulama kurulumlarını yaparak oluşturduğunuz bu farma ekleyebilirsiniz. SharePoint özelinde bahsedecek olursak, ayrı bir sunucu olmadan doğrudan SharePoint Server kurulu olan sunuculara da kurulum gerçekleştirebilirsiniz. (Ancak önerilmez)

Workflow Manager hakkında kısa bir özetten sonra bu yazıda değinmek istediğim konuya gelmek isterim. Tüm sunucu uygulamalarında olabileceği gibi farklı nedenlerle Workflow Manager’I da mevcutta konfigüre edildiği sunucu üzerinden farklı bir ortama taşımak isteyebilirsiniz. Nedenleriniz aşağıdakilerden biri olabilir;

  • Mevcut ortamda yaşanan sıkıntılar sonrasında in-place düzeltme işlemlerini yapamıyor ve yeniden kurulum yapmak istiyor olabilirsiniz.
  • Alınan mimari bir karar sonrası Workflow Manager’I ayrı bir farm olarak değerlendirmek istiyor olabilirsiniz.
  • Bir felaket senaryosu sonrası elinizde sadece güncel Workflow Manager veritabanları kalmış olabilir ve yeni bir yapılandırma ile çalışmalarınıza devam etmek istiyor olabilirsiniz.
  • Kurulu bulunan ortamda Windows upgrade, domain upgrade/change, vb sistemsel altyapı çalışmaları yapılacak olması sebebiyle konfigürasyonu yenilemek istiyor olabilirsiniz.

Bu nedenleri artırmak mümkün. Temel olarak bir uygulamanın yeniden kurulması ve konfigüre edilmesi çok ciddi bir sorun gibi görünmüyor. Ancak sözkonusu olan iş akışlarını barındıran Workflow Manager gibi bir yapı olduğunda önemli olan konulardan biri de iş sürekliliği. Mevcut kurulumunu üzerinde yaygınlaştırılmış olan onlarca iş akışınız ve bu iş akışlarının SharePoint liste ve kütüphaneleri ile ilişkili binlerce devam örneği (instance) olabilir. Elbette ne tüm akışlarınızı yeniden yaygınlaştırmak isteyeceksiniz ne de devam eden örnekleri kaybedip tüm örnekleri yeniden başlatmayı. Bu noktada sağlıklı bir ortam kurmak ve mevcut yapının bu ortam üzerinde devam eden örnekleri ile beraber çalışmasını sağlamak önem taşıyor.

Bu işlemi gerçekleştirmek için öncelikle ön gereksinimlerimizi tanımlamamız gerekiyor.

Workflow Manager Certificate Expiration

SharePoint ortamınızda iş akışı hizmeti için Workflow Manager 1.0 kullanıyorsanız ilk kurulumunuzdan itibaren 5 yıl sonunda ansızın Workflow Manager ve Service Bus sertifikalarının expire olması nedeniyle iş akışlarınızın çalışmaması problemi ile karşılaşabilirsiniz. Çünkü kurulum esnasında otomatik oluşturulan sertifikaların süresi 5 yıl ve otomatik olarak yenilenmiyor. Çok klasik bir sertifika expire problemi gibi görünse ve hızlıca yeni bir sertifika yardımıyla sorunu aşabileceğinizi düşünsenizde Workflow Manager’ın süresi geçtikten sonra sertifika yenilemenize izin vermemesi ile bu sorunda çıkmaza girebilirsiniz.

Evet maalesef Workflow Manager sertifikalarının yenilenmesi çok basit bir işlem olsa da sertifika expire olduktan sonra bu işlemi gerçekleştirmenize izin verilmiyor. Çünkü Workflow Manager PowerShell yapısı çalışırken sertifika kontrolü yapıyor ve süresi geçmiş bir sertifika ile Workflow Manager farm bağlantısını yapamıyorsunuz. SharePoint loglarında ve işlem yapmak için PowerShell kullanırken alacağınız hata şöyle birşey olacaktır.

“Certificate requested with thumbprint … not found in the certificate store”

Maalesef Workflow Manager sertifika expire tarihi yaklaşırken bir uyarı vermiyor ve tabi 5 yıllık bir periyot için ilk kurulum yaptığınızda kendinize bir hatırlatıcı koymanızda çok uygulanabilir bir işlem değil. Bu nedenle genellikle iş işten geçtikten sonra haberdar oluyoruz.

Bu durumu çeşitli forumlarda aradığınızda genellikle uygulamanız gereken yöntem olarak önerilen yöntemi, yani Workflow Manager farmını yeniden yapılandırmanız ve eski verileri buraya taşımanız önerisini bulacaksınız. Evet bu önerilen yöntem ancak yazıldığı kadar kolay bir operasyon olmayacak 🙂

Sorunu çözmek için hemen aklımıza gelen yöntemlerden birisi de tarihi geri almak ve sertifika değişimini gerçekleştirip yolumuza devam etmek. Burada bu yöntemi işlem adımları şeklinde detaylandırmak istiyorum.

SharePoint Saturday İstanbul 2019 Yaklaşıyor!

Benim de konuşmacıları arasında yer aldığım SharePoint Saturday Istanbul 2019 etkinliği 14 Aralık 2019‘da Microsoft Türkiye ofisinde. Etkinliğe ücretsiz olarak https://lnkd.in/de9NrHF adresinden kayıt olabilirsiniz. #SPSIstanbul #SharePoint

SharePoint Saturday İstanbul 2019

SharePoint Saturday İstanbul 2019

Hata: Unable to load workflow actions from server. Please contact your server administrator.

SharePoint Designer 2013 yardımıyla SharePoint 2013 seviyesinde iş akışı geliştirmek istediğinizde aşağıdaki şekilde hata mesajı alıyor olabilirsiniz.

“Unable to load workflow actions from server. Please contact your server administrator.”

Bu hata mesajını internette aradığınızda pek çoğu lokal cache’in sıfırlanmasını tavsiye eden pek çok sonuç elde etmeniz mümkün. Ancak benim gibi bu gönderiler sizin de sorununuzu çözmemiş olabilir. Bu durumdaysanız aşağıdaki güncellemeyi yüklemenizi öneriyorum.

https://www.microsoft.com/en-us/download/details.aspx?id=50708

Hata: The form cannot be rendered. This may be due to a misconfiguration of the Microsoft SharePoint Server State Service

Yeni konfigüre ettiğiniz bir SharePoint farmında Infopath tabanlı formlarınızı web tarayıcı üzerinde görüntülerken aşağıdaki şekilde hata mesajı alabilirsiniz.

“The form cannot be rendered. This may be due to a misconfiguration of the Microsoft SharePoint Server State Service. For more information, contact your server administrator.”

Bu durumda yapmanız gereken işlem oldukça basit. State Service Application’ın aktive edilmesi gerekiyor. Bu işlem için aşağıdaki PowerShell komutlarını kullanabilirsiniz.

Adım 1 : State Service Application Provision İşlemi

Adım 2 : Service Application Proxy’i Yaratın

Adım 3 : Service Application Veritabanını Yaratın

Adım 4 : Database Şemasını Oluşturun

Detaylı bilgi için tıklayınız

 

Windows Gezgini Görünümünün Farklı Bir Bağlantı İle Açılması

SharePoint’in en eski sürümlerinden bu yana kullanılmakta olan bir yöntem olsa da son dönemde gündeme gelen OneDrive, sürükle/bırak yapısı gibi daha modern ve istemci tarafında ek bir servis gereksinimi bulunmayan yöntemler nedeniyle populerliği azalan bir özellik “Open with explorer” bağlantısı. Halen ribbon üzerinde görebiliyor ve kullanabiliyorsunuz. Ribbon üzerinde yer alan bu buton aracılığı ile doğrudan ve sorunsuz olarak işlemi yapabiliyorken bazen bu butonun sahip olduğu fonksiyonaliteyi örneğin hazırlayacağınız bir web bölümü üzerindeki bir buton veya linke kazandırmak isteyebilirsiniz.

Standart bir link vermek maalesef bu konuda sizin için çözüm olmayacak. Çünkü arka planda “Access Denied” hatası alacaksınız. Bu bölümde vereceğiniz link bir UNC path’e olmak zorunda. Bu durumda ise istemci tarafındaki tarayıcınız çalıştırılabilir bir dosya için link olduğunu düşünüyor ve güvenlik gerekçesi ile bağlantının çalışmasına izin vermiyor. Bu nedenle vereceğiniz bağlantıyı aşağıdaki gibi oluşturabilirsiniz.

Bu bölümde doğrudan kütüphanenin adresini vermek yerine isterseniz kütüphane içerisindeki alt klasör isimleri ile linkinizi derinleştirebilirsiniz.

SPSecurity.RunWithElevatedPrivileges Kullanımına Rağmen Access Denied Mesajı Almak

SharePoint üzerinde yazılım geliştirme işlemleri yaparken zaman zaman bağlı olan kullanıcının yetki seviyesinin üzerinde bir işlemi kontrollü şekilde daha yüksek bir yetki seviyesinde gerçekleştirmek isteyebilirsiniz. Örneğin arayüz üzerinden bir webpart yardımıyla seçilen kullanıcılara yetki vermek istiyorsunuz. Varsayılan olarak webpartınız o anda bağlı olan kullanıcının yetki seviyesinde çalışacak ve eğer bağlı kullanıcının “Full Control” yetkisi yoksa hata mesajı almasına neden olacaktır.

Bu durumda kodlarınızı aşağıdaki blok içerisine almanız kodlarınızın daha yüksek bir yetki seviyesi ile çalıştırılmasına yardımcı olur ve yaşanan sorunu ortadan kaldırabilirsiniz. Şüphesiz dikkatli kullanılması gereken bir kod bloğu.

Ancak bazen bu blokları kullanmanıza rağmen işlemin gerçekleşmediğini ve arka planda logları incelediğinizde alınan hatanın Access Denied olduğunu gözlemleyebilirsiniz. Bu durumun büyük olasılıkla nedeni bu kod bloğu dışında oluşturulmuş olan bir SPWeb veya SPSite nesnesini kullanıyor olmanızdır. Yani örneğin aşağıdaki gibi kullandığınızda sorun yaşayabilirsiniz.

Bu kullanım yerine SPSite ve SPWeb‘in bir instance’ının da SPSecurity.RunWithElevatedPrivileges içerisinde yaratılması ve bu nesnelerin kullanılması sorununuzu çözecektir. Yani kod bloğunu aşağıdaki gibi yapılandırabilirsiniz.

 

SharePoint workflows stop working after you install .NET security updates for CVE-2018-8421

Gecikmiş bir yazı ancak halen pek çok kişi tarafından sorgulandığını gözlemliyorum. Eylül 2018 döneminde yayınlanan aylık toplu güvenlik güncelleştirme paketleri sonrası SharePoint üzerinde workflow kullanan pek çok kullanıcı (Nintex workflowları dahil) iş akışlarının durduğu veya “Bu akış sistem hesabı tarafından iptal edildi” şeklinde hata aldığı sorunu ile çözüm arayışına geçti. Aslında güvenlik güncellemesinden kısa bir süre sonra Nintex gibi bu servisi kullanan geliştiriciler ve Microsoft tarafından yapılması gereken düzenlemeye ilişkin bilgi paylaşıldı ancak farkına varılmayabiliyor.

Microsoft’un orjinal destek yazısına bu bağlantıdan ulaşabilirsiniz. Kısa bir özet ile bu sorunun nasıl ortadan kaldırılacağı ise şu şekilde.

İlk yöntem elbette yüklenen güvenlik güncellemesini geri almak ancak bu kalıcı bir çözüm değil. Bir anda farkettiğiniz soruna ilişkin kalıcı çözüm devreye alınana kadar sözkonusu güncellemeleri sunucudan silebilirsiniz. Sonrasında ise her web uygulamanızın (elbette tüm web front-end sunuculardaki) web.config dosyasına aşağıdaki satırları eklemeniz gerekecek. (Web.config içinde <AuthorizedTypes araması yaparsanız varsayılan olarak ekli olanların bulunduğu node’a erişebilirsiniz),

İşlem sonrası AppPool recycle olacak ve artık workflowlarda hata almıyor olacaksınız.

Hata: Loading this assembly would produce a different grant set from other instances

SharePoint farm sunucuları üzerinde bir işletim sistemi veya MS Patch yüklemesi yaptıktan sonra zaman zaman karşılaşabileceğiniz hizmet kesintileri sözkonusu olabilir. Aldığınız hata aşağıdaki şekilde ise ve web uygulamalarınıza veya Central Administration web uygulamasına erişirken hata alıyorsanız aşağıdaki şekilde müdehale etmeniz gerekecektir.

“Loading this assembly would produce a different grant set from other instances”

Bu sorunu çözmek için hızlı bir çözüm olarak sorun yaşana uygulamanın web config’inde aşağıdaki şekilde olan değeri

şu şekilde değiştirmeniz yeterli olacaktır.

Ancak bu işlem Microsoft tarafından desteklenmiyor ve olası bir Microsoft destek işleminizde ürününüzün destek kapsamı dışına çıkmasına neden olabilir. Bu nedenle tüm web uygulamalarında bu işlemi yapmak yerine aşağıdaki şekilde registry üzerinden tek seferde düzenlemenizi yapabilirsiniz.

Start > Run > regedit sonrası “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework” anahtarına kadar gelin ve buraya yeni bir DWORD yaratın. İsim olarak “LoaderOptimization” kullanacağız. Ve varsayılan değer olarak “1” yazabilirsiniz.

İşlem sonrası IISRESET yapabilirsiniz ancak yapmasanızda geçerli olacaktır.