microsoft crm etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
microsoft crm etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

29 Mayıs 2010 Cumartesi

Dashboard/Page Scroll Bar on Main CRM Window


Whenever you need to show a dashboard report or a page on CRM main window, just after modifying sitemap file, the first thing that you gonna say is: where is the this shining scroll bars. To have it, you need to deserve it: An html page will save your life and time(s of tim: I really like this tv serial by the way). Your sitemap will point this html page and that html page will handle missing scroll bars through javascript. To see the example:
Click here!
P.S: If you are trying to show a report don't forget to pass this parameter in query string: menu=no


Ana CRM Sayfasinda ki Scroll Bar
Ne zaman ki CRM anasayfasinda bir dashboard yada rapor gostermek icin site map'i guncellediniz, diyeceginiz ilk sey 'lan nerde bu guzelim scrollbar'. Ona sahip olmak icin once haketmelisiniz. Bildigin basit bir html sayfasi cok ise yarayabilir. (Bu arada the life and times of tim isimli diziyi tavsiye ederim) Nasil mi? Sizin sitemap bu html sayfayi gosterecek, html sayfa ise sizin raporu; ancak javascript ile scrollbar ekleyerek sizin raporun hayatini kurtaracak. Daha temiz bir aciklama icin:Beni tikla!
Dipnot: Eger rapor gosterecekseniz su parametreyi raporu cagiran linkin query stringine gecmeyi unutmayin: menu=no

28 Nisan 2010 Çarşamba

Brutal Errors - Episode 2 : Unable to load print control

For every project without a shadow of a doubt someone will come up with "I'm not able to print report" complaint. Not all users only one or some of them will get "Unable to load print control" alert message when they click print icon on report. Here are some exercises: for this issue.
1- Installing "ReportViewer.exe" to client PC.
2- Enabling ActiveX options from "Internet Explorer -> Tool -> Internet Options"
3- Adding web site to "Trusted Sites" section.
4- Removing registry key from client PC: "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{FA91DF8D-53AB-455D-AB20-F2F023E498D3}"
5- Registering “rsclientprint.dll” binary to client PC.(You can find “rsclientprint.dll” in “RSClientPrint.cab” which is under Reporting Server folder (i.e.: “Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin”))



Ölümcül Hatalar - Bölüm 2
Hiç şüphesiz her projede "raporu yazdıramıyoruz" şeklinde bir şikayetle karşılaşırsınız. Bide öyle herkes için degil bir yada birkaç kişide "Unable to load print control" şeklinde hata mesajı olur. Bu gibi münasabetsiz durumlar için uygulamakta fayda olacak bir takım adımlar aşagıdaki gibidir:
1- "ReportViewer.exe" isimli programın kullanıcı bilgisayarına kurulması.
2- ActiveX kontrollerinin "Internet Explorer -> Tool -> Internet Options" menusunden aktif hale getirilmesi.
3- Sitenin "Güvenilir Siteler" bölümünde yer alması.
4- Kullanıcı bilgisayarındaki :"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{FA91DF8D-53AB-455D-AB20-F2F023E498D3}" numerolu sistem anahtarının silinmesi.
5- “rsclientprint.dll” dosyasının kullanıcı bilgisayarına assembly'ye cmd suretiyle copyalanması("rsclientprint.dll”i Reporting Server dizinindeki (örn: “Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin”) “RSClientPrint.cab” içinde bulabilirsiniz)


20 Mart 2010 Cumartesi

Brutal Errors - Episode 1 : The key specified to compute a hash value is expired

When you left the office yesterday, everything was OK. But somehow this morning a weird "Invalid Action" error message is greeting you. The moment that you have check the trace logs: "The key specified to compute a hash value is expired" text was copied and pasted to google search, that's why you are here now:
Try the things below-maybe it saves your morning.
1- Make sure that MSCRM Async Service is running-even if it's running , restart it.
2- If you are still reading the post it means you have to run the command below:
C:\Program Files\Microsoft Dynamics CRM\Tools >Microsoft.Crm.Tools.WRPCKeyRenewal.exe /R
If you are still reading this post, click an other search result. By

Ölümcül Hatalar - Bölüm 1
Dün ofisi terk ederken herşey çalışıyordu. Nasıl oluyorsa bu sabah geliyorum ve saçma bi "Invalid Action" mesajı "selam genç" diyor. Trace loglarını açtığında gördügün: "The key specified to compute a hash value is expired" cümlesini google'da aradıgın için burada değil misin zaten.
1- MSCRM Async Service'in çalıştıgına emin, çalışıyorsa bile restart et.
2- Hala okuyorsan 1.madde işe yaramamış demektir ki şu aşagıdaki komutu, komut satırında çalıştırman gerekecek:
C:\Program Files\Microsoft Dynamics CRM\Tools >Microsoft.Crm.Tools.WRPCKeyRenewal.exe /R
Eğer hala okuyorsan, arama sonuçlarındaki başka bi sayfayı aç derim. Selametle

28 Şubat 2010 Pazar

Helpful JavaScript Codes - Episode 1


Let’s assume that you have a readonly field and you want set that field’s value programatically; it’ll not save (if you don’t write code below):
crmForm.all.new_customfield.ForceSubmit = true;

When you modify a form and try to close without saving, you’ll see an irritating popup, to avoid that popup:
crmForm.detachCloseAlert();

If you want to run a javascript code; just after saving a new record (not for existing records), following code can help you:
if(window.history.length > 0)
{
alert("Reopened");
}else
{
alert("First time");
}


Maximize form:
window.moveTo(0,0);
window.resizeTo(screen.availWidth, screen.availHeight);


OnChange event get fired when you leave that field, If you want to run a function when you focused that field:
crmForm.all.new_customfield.onfocusin = function() {
alert("Received focus");

}

Evladiyelik Javascript - Bölüm 1

Diyelim ki bir readonly fieldiniz var ve siz javascript ile bu field'in degerini güncellediniz, siz kaydetmek istediniz ama CRM kabul etmedi. (Tabi aşagıdakini yazmaz iseniz):
crmForm.all.new_customfield.ForceSubmit = true;

Bir kayıt açtınız bazı alanları güncellediniz yada onLoad anında otomatik olarak bazı field'ler güncellendi, kaydetmeden kapatmak istediniz ve istenmeyen popup gördünüz, o halde:
crmForm.detachCloseAlert();

Form yüklenirken çalışmasınız istediginiz bir kod var ancak bu kodu yeni bir kayıt oluşur oluşmaz; form yüklenirken çalışsın istiyorsunuz, var olan bir kaydı açarken degil:
if(window.history.length > 0)
{
alert("Reopened");
}else
{
alert("First time");
}


Kaplasaa la ekranı:
window.moveTo(0,0);
window.resizeTo(screen.availWidth, screen.availHeight);


OnChange olayı siz bir alanı terk ederken çalışır eğer ki o alan tıklanınca çalışsın istiyorsanız:
crmForm.all.new_customfield.onfocusin = function() {
alert("Received focus");

}

31 Ocak 2010 Pazar

Why nothing is working ?!


You are trying to run a custom application which talks to CRM webserivce but it's throwing exception like "Microsoft.Crm.WebServices.Crm2007.MultipleOrganizationSoapHeaderAuthentica-tionProvider,Microsoft.Crm.WebServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' doesn't exist" than don't worry.

One single dll can fix all your problems. Find "Microsoft.Crm.WebServices.dll" from somewhere (start searching from CRM server itself) Did you find it?Cool. Type "assembly" to Run window and check GAC. The thing that you should do is drag&drop this dll to GAC window. Let it copy the dll. Restart the IIS and thank.



2 kişinin bildiği sır degildir.

CRM webservis'iyle münasebeti olan bir uygulaman mı var? Çalıştırmaya kalkınca şu hatayı mı alıyorsun "Microsoft.Crm.WebServices.Crm2007.MultipleOrganizationSoapHeaderAuthentica-tionProvider,Microsoft.Crm.WebServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' doesn't exist" o zaman korkma hacı, ilacı var.

Bildigin tek bir dll seni iyi eder. "Microsoft.Crm.WebServices.dll" diye bi dosya var sagdan soldan biyerden bul bunu, aramaya server'dan başla, buldun mu?helal. O her bogumunda kıl olan parmaklarınla Run penceresinde "assembly" yaz da GAC'ı bi görelim. Şimdi o buldugun dosyayı GAC penceresinin üzerine sürükleyip bırak. Bi de IIS reset çak, saol desene !

30 Aralık 2009 Çarşamba

CRM Customization BackUp Tool

If you are a member of development team I'm sure your friends or maybe you will overwrite CRM customizations; Means,someone will lose customization, or let's say you have to revert customizations back to 1 month ago.

You can use "CRMUtilities-CustomizationBackUp" plugin to get backup of current customizations before importing new one. Once you register this plugin and try to import a customization system will export all current customizations to local folder, so you'll have all versions of customizations.

Download the file which contains required Dll and ReadMe.doc

Customization kaybetmeye son:

Takım arkadaşlarınız sizin özelleştirmelerinizi mi eziyor yada siz güncellemelerinizi unutup kendi customization dosyalarını mı eziyorsunuz, hiç olmadı belirli bir tarihteki customization'lara dönmek mi istiyorsunuz. İşte size CustomizationBackUp plugini.
Yeni herhangi bir özelleştirme yüklemek istediginizde sistem otomatik olarak mevcut tüm özelleştirmeleri belirli bir konuma kopyalar, böylece tüm customization geçmişine sahip olursunuz.

Dosyayı Indir, gerekli Dll ve BeniOku içindedir.

30 Kasım 2009 Pazartesi

Why it's not updating owner field of record?

Because most probably you are trying to set ownerid field like:

contact.ownerid = new Owner();
contact.ownerid.type = EntityName.systemuser.ToString();
contact.ownerid.Value = [SystemUserGuid];

which is wrong.

Changing the ownership of a record is not that much easy, you should call another CrmService method, so here is the solution:

SecurityPrincipal securityPrincipal = new SecurityPrincipal();
securityPrincipal.Type = SecurityPrincipalType.User;
securityPrincipal.PrincipalId = new Guid(newOwnerID);

TargetOwnedContact target = new TargetOwnedContact();
target.EntityId = new Guid(contactID);

AssignRequest assignRequest = new AssignRequest();
assignRequest.Assignee = securityPrincipal;
assignRequest.Target = target;

AssignResponse assignResponse = (AssignResponse)crmService.Execute(assignRequest, null, null); //CRMWebServiceCall


Yani diyor ki:
Çünkü büyük ihtimalle ownerid için şöyle bir atama yapıyorsunuz:

contact.ownerid = new Owner();
contact.ownerid.type = EntityName.systemuser.ToString();
contact.ownerid.Value = [SystemUserGuid];

ki yanlış.

Bir kaydın sahibini(owner) değiştirmek o kadar kolay degildir ki bu noktada başka bir webservis çagrısı yapmak durumundasınız. Şu aşağıdaki kod blogu size fikir cerecektir:

SecurityPrincipal securityPrincipal = new SecurityPrincipal();
securityPrincipal.Type = SecurityPrincipalType.User;
securityPrincipal.PrincipalId = new Guid(newOwnerID);

TargetOwnedContact target = new TargetOwnedContact();
target.EntityId = new Guid(contactID);

AssignRequest assignRequest = new AssignRequest();
assignRequest.Assignee = securityPrincipal;
assignRequest.Target = target;

AssignResponse assignResponse = (AssignResponse)crmService.Execute(assignRequest, null, null); //CRMWebServiceCall


28 Ekim 2009 Çarşamba

Attach External JavaScript File


I'm sure you have common functions that you are using in many entity's javascript part(onLoad,onChange,onSave). Actually the best inheritance is not copy-paste so you can keep all those functions in one *.js file and while form is loading you can attach to form with the following way.

var script = document.createElement('script');
script.language = 'javascript';
script.src = '/CustomScripts/MyCustomJavascriptFile.js';
document.getElementsByTagName('head')[0].appendChild(script);
script.onreadystatechange = function()
{
if (this.readyState == 'complete' || this.readyState == 'loaded')
{
//You can call your functions here.
}
}


We will be adding some useful functions to this javascript file on next posts.

Televizyonunu yeni açan seyircilerimiz için:
Yapmayın. Öyle bir fonksiyonu lazım olan her entity için sürekli kopyala yapıştır yapmayın, ayıp. Insan gibi bir base javascript dosyanız olsun; gerekli, en az 2 defa kullanılmış fonksiyonları bu dosyada toplayın sonra hangi entity'den istiyorsanız onun pageLoad fonksiyonuna aşagıdaki blog'u yazın, bitsin.

var script = document.createElement('script');
script.language = 'javascript';
script.src = '/CustomScripts/MyCustomJavascriptFile.js';
document.getElementsByTagName('head')[0].appendChild(script);
script.onreadystatechange = function()
{
if (this.readyState == 'complete' || this.readyState == 'loaded')
{
//şimdi burdan paşa paşa çagır fonksiyonunu.
}
}


Sonraki postlarda "işe yarar, ooo helal, yok artık" şeklindeki fonksiyonları ekleyecegiz.

26 Eylül 2009 Cumartesi

Refresh Queue

Don't you want to refresh queue. One of my client was asking this kind of solution. Their complaint was: Even if a new record assigns to queue, they are not able to see that, if they don't click queue or refresher button again. Why it's not like Outlook. Yes, it's really a big deal!
Anyway here is the code for this big problem. I'm posting it because, you may face with this kind of people as well.

We are going to edit "home_workplace.aspx" which is under "Microsoft Dynamics CRM\CRMWeb\Workplace" folder.

add this two javascript function in to script section of page.

function RefreshPage() {
crmGrid.Refresh();
}

function Refresher() {
setInterval('RefreshPage()', 30000 );
}


and add this line in to "function window.onload()" function

Refresher();

so at the and it'll be like this

function window.onload() {
HandleBackButtonIssues("workplace");
<%
if (CurrentUser.WorkplaceStyle == Microsoft.Crm.Caching.WorkPlaceStyles.Sales) {
Response.Write("resetMenuItems(MENU_DEL_ASSIGN);");
}
else {
Response.Write("resetMenuItems(MENU_ALL);");
}
%>

Refresher();
}

function RefreshPage() {
crmGrid.Refresh();
}

function Refresher() {
setInterval('RefreshPage()', 30000 );
}


Now on; it'll update the queue list in every 3seconds(or it's up to you).

Buradan açınız:

Kuyrukta listelenen kayıtların otomatik güncellenmesini istemez misiniz? Müşterimden biri bu tarz bir çözüm arıyordu. Şikayetleri şöyleydi ki: Baktıkları kuyruga yeni bir kayıt atanmış olsa dahi, eger yenile butonuna tıklamaz yada o kuyruga yeniden girmezlerse yeni gelen kaydı göremiyorlarmış. Neden Outlook gibi değilmiş. Cidden büyük sorun!
Herneyse böyle büyük bir sorun için aşagıdaki kod parçacıgından faydalanabilirsiniz. Sırf sizin de karşınıza böyle insanlar çıkabilir diye yazıyorum.

"Microsoft Dynamics CRM\CRMWeb\Workplace" klasörü altında ki "home_workplace.aspx" isimli sayfayı biraz düzenleyeceğiz.
Şu sağ elimde görmüş oldugunuz 2 fonksiyonu sayfanın javascript bölümüne ekliyoruz.

function RefreshPage() {
crmGrid.Refresh();
}

function Refresher() {
setInterval('RefreshPage()', 30000 );
}


Aşağıda bahsi geçen satırı "function window.onload()" fonksiyonun içine dahil ediyoruz.

Refresher();

sonunda ortaya şöyle bir manzara çıkıyor.

function window.onload() {
HandleBackButtonIssues("workplace");
<%
if (CurrentUser.WorkplaceStyle == Microsoft.Crm.Caching.WorkPlaceStyles.Sales) {
Response.Write("resetMenuItems(MENU_DEL_ASSIGN);");
}
else {
Response.Write("resetMenuItems(MENU_ALL);");
}
%>

Refresher();
}

function RefreshPage() {
crmGrid.Refresh();
}

function Refresher() {
setInterval('RefreshPage()', 30000 );
}


Bundan böyle, her kimki kuyruga kayıt atar en geç 3 saniyede görüle.(kaç saniye olacagı size kalmış)

20 Ağustos 2009 Perşembe

Error on Entity Creation :'(

If you are getting exceptions like:
EntityService.Create caught exception: System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
The statement has been terminated

ExecuteNonQuery requires an open and available Connection. The connection's current state is closed.

You should configure server's registry settings. These errors are related with Sql connection and execution timeout problem. And Oscar goes to Solution:

Create a *.reg file and register to your system:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\Software\Microsoft\MSCRM]
"OLEDBTimeout"=dword:00086400
"ExtendedTimeout"=dword:01000000


Or:
To registry;
Create 2 DWord typed key "OLEDBTimeout" and "ExtendedTimeout" and set their values to "86400" and "1000000" (decimal). Reset IIS and be Happy.

Siz nasıl diyor:

Eğer ki şu şekil hatalar alıyorsanız ki bunlar “iflit” oldugum hatalardır. (iflit’I cümle içinde kullandıgım ve ingilizce tercümesini de yapmadıgım icin güçlüyüm, cesurum, hazırım.(bkz:komando))

EntityService.Create caught exception: System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
The statement has been terminated

ExecuteNonQuery requires an open and available Connection. The connection's current state is closed.

Temelde bu hatalar sql bağlantıları ile ilgili. Timeout hatası alması yüzünden isteğinizi yerine getiremeyen CRM ve şu şekil bir çözümle bu soruna bir dur demektedir.

Ister aşagıda italık olarak yazdıgım kısmı *.reg file olarak kaydedin ve çift tıklamak suretiyle bırakın sisteminize nüfüz etsin:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\Software\Microsoft\MSCRM]
"OLEDBTimeout"=dword:00086400
"ExtendedTimeout"=dword:01000000

Yada: Registry açılır; “HKEY_LOCAL_MACHINE > Software > Microsoft > MSCRM” altına
“OLEDBTimeout” ve “ExtendedTimeout” isminde iki Dword anahtar ve bunlara da sırasıyla “86400” ve “1000000” decimal değerleri atanır. IIS reset’I müteakip Mutlu olunur.

23 Haziran 2009 Salı

Customize the Queue View ?!

Kısıtlamalar yüzünden can sıkıcı bir hal alan queue'lar ve onların "Olmaz olsun" dedirten özellikleri. Müşteriler haklı olarak queue kullanmak ister, "Bunu yaparbilir miyiz? yapamayız. Bu olur mu? oluru yok.". Hayır, hiç hoş değil. Sizde benim gibi queue view'e kolon eklemek yada varsayılan sıralamayı değiştirmek isterseniz şunları yapabilirsiniz.

_MSCRM isimli CRM veritabanının tabloları arasından "MetadataSchema.Entity" isimli tablosuna gerçekleştirilecek şöyle bir update script çalıştırılır ve IIS yeniden başlatılır, böylece yeni bir aleme adım atılır.


UPDATE MetadataSchema.Entity SET IsCustomizable = 1 WHERE [Name] = 'Queueitem'

Şu andan itibaren "customize entities" bölümünde QueueItem'ları görebilir ve View'ları değiştirebilir ve yayınlayabilirsiniz.


NOT: Yayınlamalarınız bittikten sonra "
IsCustomizable = 0" yapmayı ve IIS'i yeniden başlatmayı unutmayın, üzülürsünüz.

English Subtitle:
Queue's and their limited features. Clients want to use queues but for each time. "Can we implement this? No, we can't. Is it possible ? No way." which is not nice. If you want to add columns or maybe change the sort-order column for queueview you can use this solution.

Run update script which is specified below for
MetadataSchema.Entity table which is in CRM database (_MSCRM ), than restart IIS and say "hi".

UPDATE MetadataSchema.Entity SET IsCustomizable = 1 WHERE [Name] = 'Queueitem'

Now on in "Customize Entities" section you will able to see "QueueItem" and you can update views and publish them.

PS: After publishment don't
forget to set "IsCustomizable = 0 " and restart IIS. Otherwise you migth be sad.

14 Haziran 2009 Pazar

Changing Available Entity Types in Lookup

Sizede CRM ile ilgili garip isteklerin geldiği olmuştur, bana gelenlerden sonuncusu Case(Incident)'in "Customer" bilgisinin yalnızca Contact entitysi ile ilişkilendirilmesiydi. Malumunuz normalde contact yada account entity seçebiliyorsunuz, bunu contact ile sınırlandırmak istediler. Eyvallah dedim ve şu aşağıda açıkladıgım çözümü uyguladım:

Case entity'sinin form load event'i edit edilir ve biter:
crmForm.all.customerid.setAttribute("lookuptypes", "2"); //2: Contact entity code

Siz değiştirmeden önce default kod:
crmForm.all.customerid.setAttribute("lookuptypes", "1,2"); //1: Account entity code

Yok, o hiç aklınızdan geçmesin, "o zaman lead'ler içinde case oluşturabiliriz" diyenleriniz için tokat tadında cevap:
crmForm.all.customerid.setAttribute("lookuptypes", "1,2,4"); //4: Lead entity code
derseniz, Evet lead'leri lookup'larda görürsünüz ancak sanmayın ki çalışacak.

Entity code'larını nasıl ögrenebilirim diyenler için gelsin:
http://[server]/sdk/list.aspx
Metadata'nın nimetleri bu linkten tüm entity,attribute,relations bilgilerine ulaşabilirsiniz.

Do you speak English, I don't:
I'm sure that you are also recieving weird requests from your clients. My client requested to restrict Customer field relation which is in Case(Incident) entity with only contact entity. You know normally it's related with contact and account entity. I said "OK" and applied this solution:

OnLoad event of case entity:
crmForm.all.customerid.setAttribute("lookuptypes", "2"); //2: Contact entity code

Before you update the code it was working like:
crmForm.all.customerid.setAttribute("lookuptypes", "1,2"); //1: Account entity code

No, you should not think about that "If I configure lookup I can create case for leads also".
crmForm.all.customerid.setAttribute("lookuptypes", "1,2,4"); //4: Lead entity code
You will able to see Lead records in customer lookup but don't think that you will able to create successfully.

For users who is asking "How to get entity codes?":
http://[server]/sdk/list.aspx
You can get all entities, attributesi , relations etc.

4 Haziran 2009 Perşembe

Who deleted my "System Customizer" role ?

Bu yazıyı okuyorsanız sisteminizdeki "System Customizer" rolüne bişeyler olmuş demektir ve muhtemelen hafif bir titreme ile "lan başkasının da başına gelmiş olmalı" diyorsunuz. Merak etmeyin, geldi. Daha fazla titretmeden çözümü söyleyelim:
Settings->Administration->Security Roles'den yeni bir "System Customizer" oluşturulacak, ister başka bir CRM sisteme bakarak haklarını verin, isterseniz System Administrator rolünü kopyalayın sonra güncelleyin.
  1. Şimdi CRM database'ine gidelim.
  2. RoleTemplateBase tablosunu açıp "System Customizer" RoleTemplateId değerini kenara yazalım.
  3. RoleBase tablosuna gidelim, Name'i "System Customizer" olan her satır için RoleTemplateId kolonuna o az önce kenara yazdıgımız guid değeri yapıştıralım.
Hepsini güncellediginizden emin olun dememe gerek yok sanırım.
Yinede basit bir query'e hayır demem.

SELECT [RoleTemplateId],[Name]
FROM [CET_MSCRM].[dbo].[RoleBase]
WHERE Name = 'System Customizer'

For English Press "2"
If you are reading this article, it means something is happened to your "System Customizer" role and your are saying that "Somebody should face with this issue before", don't worry: they are. Let me tell the solution:
Go to:
Settings->Administration->Security Roles. We'll create new security role which called by "System Customizer". For rigths, you can copy system administrator role and update, you can check from another CRM system or leave it empty.
  1. Go in to CRM Database.
  2. In the RoleTemplateBase table, copy the RoleTemplateId guid value for the "System Customizer".
  3. Go to the RoleBase table and paste that guid value into the RoleTemplateId column for each record that has the name "System Customizer".

I think I don't need to say , "be sure that you updated all necessary rows".
But a simple query will be useful.

SELECT [RoleTemplateId],[Name]
FROM [CET_MSCRM].[dbo].[RoleBase]
WHERE Name = 'System Customizer'