workflow manager Arşiv

Workflow Manager Migration

Workflow Manager Server is a technology that is used to host high-scale, high-density workflows. It allows you to develop workflows as declarative model. In other words, there is no code in the workflows to be developed, only their declarations. It is aimed to apply business logic to the flow by communicating with the background systems over the services. It is built on Microsoft .Net Framework 4.5 and Windows Workflow Foundation.

The general use of Workflow Manager is running SharePoint Workflows on Microsoft SharePoint Server. Although Workflow Manager is not a technology created for SharePoint, it is mainly used with SharePoint product.

It works in Farm topology. So, just like SharePoint or Exchange Server farms, you perform a farm configuration after the initial server setup. Then, you can add servers to this farm that you created by installing applications on new servers. If we talk about SharePoint specific, you can also install directly on servers that have SharePoint Server installed without a separate server. (Not recommended, however)

After a brief summary about Workflow Manager, I would like to come to the main issue I want to address in this article. As with all server applications, you may want to move Workflow Manager to a different environment over the server that it is currently configured. Your reasons may be one of the following;

  • After the difficulties experienced in the current environment, you could not be able to make in-place corrections and you want to re-install.
  • After an architectural decision, you may want to install Workflow Manager as a separate farm.
  • After a disaster scenario, you may only have up-to-date Workflow Manager databases and want to continue your work with a new configuration.
  • You may want to renew the configuration due to infrastructure operations such as Windows upgrade, domain upgrade / change etc. in the installed environment.

It is possible to increase these reasons. Basically, re-installing and configuring an application does not seem like a serious problem. However, when it comes to a structure like Workflow Manager, one of the important issue is business continuity. You can have dozens of workflows that have been deployed on their existing setup, and thousands of instances of these workflows associated with SharePoint lists and libraries. Of course, you will not want to re-deploy all of your workflows, nor to lose the ongoing instances and restart them. At this point, it is significant to configure a healthy environment and to ensure that the existing farm works with ongoing instances of this environment.

To perform this process, we first need to define our prerequisites.

Workflow Manager Certificate Expiration

If you are using Workflow Manager 1.0 on SharePoint, you may face problems of workflows failing to run due to unexpected expiration of Workflow Manager and Service Bus certificates 5 years after the initial setup. This happens because the certificates that are generated during the setup do not get updated automatically after they expire. It may appear to be a minor issue which could be resolved by renewing the certificate, however you will get stuck once Workflow Manager expires and stops you from renewing.

Even though renewing certificates is not a difficult task, it may get complicated once you are prohibited to renew them after they expire. The reason is while active, Workflow Manager PowerShell checks certificates and it is not possible to establish connection between farms and Workflow Manager with an expired certificate. The error message you will receive while working with PowerShell and in the SharePoint logs will be as follows:

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

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.

Hata: Maximum allowed Correlation Filter have been reached or exceeded

Geliştirmesini yaptığınız workflowlarda yoğun kullanımlar sonrası aşağıdaki gibi bir hata ile karşılaşabilirsiniz.

Exception command text: [dbo].[PerformBatchOperations], exception = Microsoft.ServiceBus.Messaging.QuotaExceededException: The number of maximum allowed CorrelationFilter have been reached or exceeded. Number of filters:100001, Max number of filters allowed: 100000.

Hatadan da anlaşılacağı üzere bu bir sorundan ziyade bir limitlemeye takıldığınız anlamını içerir. Sorunun çözümü için aşağıdaki adımları uygulamanız yeterli olacaktır.

  • Service Bus Farm’ı stop edin. Bu işlem için “Stop-SBFarm” PowerShell komutunu kullanabilirsiniz.
  • Limiti yükseltin. Bu işlem için “Set-SBRuntimeSetting -Name MaximumNumberOfCorrelationFiltersPerTopic -Value 1000000” PowerShell komutunu kullanabilirsiniz.
  • Veritabanı yöneticinizi açın ve SBMessageContainer01 veritabanında bir sorgu çalıştırın “UPDATE TopicsTable SET MaxCorrelationFilters = 1000000
  • Service Bu Farm’ı yeniden başlatın. Bu işlem için “Start-SBFarm” PowerShell komutunu kullanabilirsiniz.

PowerShell komutları için hem Service Bus PowerShell ekranını hem de Workflow Manager PowerShell ekranını kullanabilirsiniz.