Dynamics 365 - Portal Kullanıcısı Şifre Değiştirme Sorunu

 Change Password for Portals Contact





 Son güncellemeden (wave 2 release) sonra Dynamics 365 üzerinden portal kullanıcılarının şifresini değiştirme işlemi çalışmıyordu. Bunun sebebide güncelleme ile birlikte Task Flow kullanımının sona ermesiydi. 

 Ocak ayındaki güncellemeye kadar çözüm için 2 yöntem bulunuyor.

  • Portal Yönetimi uygulaması üzerinden ilgili kişi formu açılır. Şifre Değiştir butonu tıklanıldığında ilgili sayfa açılıyor. 

  • Diğer uygulamalarda url nin sonuna son güncellemenin geçerli olmaması için "&flags=FCB.October2021Update%3Dfalse" ifadesini eklemek. 

 Örnek Url: 

 https://xxxxx.crm.dynamics.com/main.aspx?appid=4a007c93-5b0a-ec11-b6e5-000d3a9c5ca3&forceUCI=1&pagetype=entityrecord&etn=contact&id=286a2fe8-4911-ec11-b6e6-000d3a13273f&flags=FCB.October2021Update%3Dfalse

Dynamics 365 UCI - NavigateTo Client API


Xrm.Navigation.navigateTo(pageInput,navigationOptions).then(successCallback,errorCallback);

Dynamics 365 için 2020 Release Wave 1 Güncellemesi ile artık dialog penceresinde dynamics 365 formlarını açabiliyoruz.

Dynamics 365 kaydını açmak için Xrm.Navigation.openForm yöntemini kullandık ve bu yöntem kayıtları yeni pencerede veya aynı tarayıcı penceresinde açıyordu.

NavigateTo Client API kullanarak, geçerli formumuzu veya web kaynağımızı terk etmeden CRM kaydını özel web kaynağımızdan veya herhangi bir CRM formundan iletişim kutusunda açabiliriz.

Not:
Bu yöntem sadece Birleşik Arabirim  (Unified Interface)' de desteklenir. Eski arayüz içerisinde kullanılmaz.


Örnek script kullanımları

1- Varlık Listeleme

var pageInput = {
    pageType: "entitylist",
    entityName: "lead",
};

Xrm.Navigation.navigateTo(pageInput).then(
  function success() {
    // Run code on success
  },
  function error() {
    // Handle errors
  }
);

Görünüm kimliğini (viewId) belirtmezsek, aşağıdaki ekran görüntüsünde gösterildiği gibi varlığın varsayılan ana görünümüne gider. Bizim örneğimizde varsayılan olarak Açık Müşteri Adaylarım seçili durumdadır.



Tüm müşteri adaylarının görüneceği görünümüm kimliğini verelim.


var pageInput = {
    pageType: "entitylist",
    entityName: "lead",
    viewId: "5A926B99-3A5F-DF11-AE90-00155D2E3002",
    viewType: "savedquery"
};

Xrm.Navigation.navigateTo(pageInput).then(
  function success() {
    // Run code on success
  },
  function error() {
    // Handle errors
  }
);



2- Varlık Formu Açma

var pageInput = {
    pageType: "entityrecord",
    entityName: "contact",
    formType:2,
   // entityId: "3f189b2b-788a-ea11-99e5-0003ff7e9ecb" //replace with actual ID
};

var navigationOptions = {
    target: 2,
    height: {value: 80, unit:"%"},
    width: {value: 70, unit:"%"},
    position: 1
};

Xrm.Navigation.navigateTo(pageInput, navigationOptions).then(
  function success() {
    // Run code on success
  },
  function error() {
    // Handle errors
  }
);

Aşağıdaki ekran görüntüsünde yeni kayıt girişi için ilgili kişi yeni formu açılmıştır.


entityId değeri olarak var olan bir kaydın guid değeri verilirse kayıtlı form açılacaktır.


3- Bir iletişim kutusunda oluşturma modunda bir form açma

Aşağıdaki script kullanılarak yeni bir müşteri adayı girişi yapılan form açılır. success metoduna formu kaydettiğiniz an düşecektir. Burada oluşan kaydımızın dynamics 365 üzerinde tutulan id değerine ulaşabiliriz.

var pageInput = {
  pageType: "entityrecord",
  entityName: "lead",
};

var navigationOptions = {
  target: 2,
  height: { value: 80, unit: "%" },
  width: { value: 70, unit: "%" },
  position: 1,
};

Xrm.Navigation.navigateTo(pageInput, navigationOptions).then(
  function success(result) {
    console.log(
      "Record created with ID: " +result.savedEntityReference[0].id +
      " Name: " +result.savedEntityReference[0].name
    );
    // Handle dialog closed
  },
  function error() {
    // Handle errors
  }
);


4- Html sayfaları görüntüleme

Daha önceden Xrm.Internal yöntemi ile aynı form üzerinde html sayfalarımızı dialog şeklinde açabiliyorduk. Bu yöntem Microsoft tarafından dökümente edilmese de bir problem çıkarmıyordu.

 Xrm.Internal.openDialog(url, dialogOptions, winArguments, null, callBackFunc);

Birleşik arabirime geçişte bu yöntem desteklenmedi. Xrm.Navigation.openForm ile html sayfalarımızı açabiliyorduk ama aynı form üzeirnde açamıyorduk. Sayfalar pop-up şeklinde görüntülenebiliyordu.

navigateTo ile artık Dynamics 365 üzerinde sayfalarımızı aynı form üzerinde görüntüleyebileceğiz.

Alttaki script kodları , html bir sayfaya querystring yoluyla parametre göndererek ilgili sayfanın açılmasını sağlar. Parametre almayan bir sayfayı açacaksanız pageInput  içerindeki data özelliğini vermemeniz gerekir.

function AgcQueryParameter(_key, _value) {
  this.key = _key;
  this.value = _value;
}

function LoadHtmlPage() {
  var userId = Xrm.Utility.getGlobalContext().userSettings.userId.replace("{", "").replace("}", "").toUpperCase();
  var langId = Xrm.Utility.getGlobalContext().userSettings.languageId;

  var param1 = new AgcQueryParameter("userid", userId);
  var param2 = new AgcQueryParameter("langid", langId);

  var qParams = new Array();
  qParams.push(param1);
  qParams.push(param2);

  var customParameters = null;
  if (qParams !== null && qParams.length > 0) {
    var paramPart = "";
    for (var i = 0; i < qParams.length; i++) {
      var item = qParams[i];
      if (i === 0) paramPart += item.key + "=" + item.value;
      else paramPart += "&" + item.key + "=" + item.value;
    }
    paramPart += "&dParam=1";
    customParameters = paramPart;
  }

  var pageInput = {
    pageType: "webresource",
    webresourceName: "new_/mutabakat/html/loadfromerp.html",
    data: customParameters,
  };

  var navigationOptions = {
    target: 2,
    width: 575,  // value specified in pixel
    height: 400, // value specified in pixel
    position: 1,
  };

  Xrm.Navigation.navigateTo(pageInput, navigationOptions).then(
    function success() {
      // Handle dialog closed
      selectedControl.refresh();
    },
    function error(e) {
      Xrm.Navigation.openAlertDialog({ text: e.message });
    }
  );
}

Açılan sayfa görünümü



 Detaylı bilgi için aşağıdaki linki kullanabilirsiniz.

https://docs.microsoft.com/en-us/powerapps/developer/model-driven-apps/clientapi/reference/xrm-navigation/navigateto

Microsoft PowerApps Office Add-in Kurulumu


Eklentiyi kurabilmek için Microsoft AppSource'a gidin ve "Microsoft PowerApps Office Eklentisi" ni arayın ve yükleyin.

https://appsource.microsoft.com/en-us/product/office/WA104380330?src=Office


Açılan sayfa üzerindeki Şimdi Al butonuna tıklayalım.


Gelen pencere üzerinde Devam butonuna tıklayalım.
Daha sonra office 365 hesabınızla giriş isteyecektir.

Giriş yaptıktan sonra  eğer excel online kullanmıyorsanız farklı bir sayfaya yönlendirileceksiniz. Açılan sayfa üzerinde Exceli Aç butonuna tıklayalım.

Makineniz üzerindeki kurulu olan excelin açılması için izin isteyecektir.


İzin verildikten sonra excel sayfası açılır ve gelen sayfada Eklentiye Güven butonu tıklanır.


Daha sonra bu eklentiye kullanıcımızla login olabiliriz.



Eğer bu şekilde işlemleri yapamazsanız aşağıdaki yöntemi deneyebilirsiniz.

Bilgisayarınızda bir excel sayfası açın ve Insert tabı altından Get Add-ins butonuna tıklayalım.


Açılan ekran üzerinde arama kutusuna powerapps yazalım ve arama sonuçlarında gelen Microsoft PowerApps Office Eklentisi ni ekle diyelim.


Ekleme işleminden sonra Insert tabı altından My Add-ins kısmını kontrol edelim . Eklentimiz buraya gelmiş olacaktır.


Dynamics 365 - Kayıt oluşturmanın ve güncellemenin yeni yolu

New way for creating and updating records in Dynamics 365 CRM


Dynamics 365 CRM'de genellikle kayıtları toplu olarak oluşturmamız veya güncellememiz gerekir.
Bunu yapmak için çeşitli yöntemler vardır. Veri Al (Import Data) yoluyla belli formatlardaki dosyaları kullanarak , Dynamics 365 CRM 'de kayıtları oluşturabilir veya güncelleyebiliriz. 
Ayrıca, Dynamics 365 CRM içindeki Toplu Düzenleme (Bulk Edit) butonu ve Excel Online butonu, varolan kayıtları toplu olarak güncellememize yardımcı olur.

Son zamanlarda PowerApps üzerinde çalışırken, Excel'de çalışmaya alışkın ve Excel sayfalarında çalışmayı seven kullanıcılar için kullanımı çok kolay ve çok yararlı olan başka bir yöntemle karşılaştım.

Şimdi, toplu kayıtları oluşturmak ve güncellemek için PowerApps ortamında kullanabileceğimiz bu yeni özelliği inceleyelim.

Bu yeni özelliğe Verileri Excel'de düzenle (Edit data in Excel) adı verilir. Bu sadece Dynamics 365 CRM ile sınırlı değildir. PowerApps Platformunun bir parçası olduğundan, diğer PowerApps ortamlarınız için  kullanılabilir.

https://make.powerapps.com adresinde oturum açın. Veri sekmesinin altındaki Varlıklar'ı seçin ve verileriyle çalışmak istediğiniz varlığı tıklatın. Daha sonra açılan varlık içerisinde Veriler sekmesine tıklayalım ve formun üstünde Verileri Excel'de düzenle adlı bir buton göreceksiniz.



Not: Burada hangi ortam için çalışacağınızı en başta seçmeniz gerekecektir. Bunu da sayfanın sağ üst köşesinde bulunan Ortamlar (Environments) altından yapıyoruz.

Bu yöntemin diğer data düzenleme yöntemlerinden (Veri Alma Sihirbazı, Toplu Düzenleme ve Excel Online) farkları 

Bu yeni özellik ve mevcut diğer özellikler arasındaki temel fark, sadece kayıtları toplu olarak güncellememize izin vermekle kalmaz, aynı zamanda başka bir yere gitmeden Excel'de hareket halindeyken kayıtlar oluşturmamıza izin verir. Excel sayfasını Dynamics 365 CRM'de içe aktarmaya gerek yoktur. Çok az tıklama ile güncellenen verileri Dynamics 365 CRM'de alacaksınız.

Excel'de verileri düzenle'yi ne zaman kullanabiliriz?
  • Dynamics 365 kullanılan kuruluş içerisinde excel ile daha rahat çalışan personeller olabilir veya işleri yalnızca belirli ihtiyaçlara yönelik CRM 'de kayıt oluşturmak ve güncellemek olabilir. Bu tip kullanıcılara yönetici olarak üzerinde çalışacakları bir excel sayfası sağlayabilirsiniz. Örneğin, Dynamics 365 CRM'de güncelleme yapmak için satış personeline bir excel Müşteri sayfası (Dynamics 365 CRM ortamına bağlanacak) sağlayabilirsiniz.
  • Dynamics 365 Yöneticisi olarak, birçoğunuz ortamda farklı kayıt kümeleri oluşturarak iş süreçlerinizi test etmek istiyorsunuz. Bu özelliği, test amacıyla Dynamics 365'te kayıt oluşturmak ve güncellemek için de kullanabilirsiniz.

Gereklilikler

Bu yöntemi kullanabilmek için excel içerisinde ‘Microsoft PowerApps Office Eklentisi’ kurulu olmalıdır. Microsoft AppSource'a gidin ve "Microsoft PowerApps Office Eklentisi" ni arayın ve yükleyin.



Eklentiyi yüklemek için ilgili makaleyi inceleyebilirsiniz.

Verileri Excel'de düzenleme nasıl çalışır?

Buradaki örneğimizde firmalar üzerinde bu yöntemi uygulayacagız.

Yukarıda anlattığım gibi https://make.powerapps.com adresinde oturum açın. Veri sekmesinin altındaki Varlıklar'ı seçin ve Firmalar varlığını tıklatın. Daha sonra açılan firma varlığı içerisinde Veriler sekmesine tıklayalım ve formun üstünde Verileri Excel'de düzenle butonuna tıklayalım.


Bu ekranda hangi veri setinde çalışacaksak ekranın sağ üst köşesinde bulunan görünümler kısmından görünüm belirleyebiliriz.


Verileri Excel'de düzenle butonuna tıkladıktan sonra bilgisayarımıza dataların bulunduğu bir excel inecektir.

İndirilen excel sayfasını açın. Microsoft PowerApps Office Eklentisi'nde Ortak Veri Hizmeti kullanıcı hesabını kullanarak Dynamics 365 CRM'de oturum açın.


Eğer daha önce giriş yapıldıysa tekrar giriş yapmamıza gerek kalmayacaktır.


Başarılı bir şekilde oturum açtığınızda, eklenti panelinde aşağıdaki seçenekleri görürsünüz.


Kaynak: Verilerin kaynağını tanımlar. Bu örnekte, kaynak Firma (account) dır.

Alan: Bulunduğum sütunu tanımlar. Bu örnekte, ‘Firma Adı’ sütununun satır hücresindeyken ‘Firma Adı’nı gösteren alan.

Yeni: Tabloya yeni kayıt girişi yapmak ve bu girişi Dynamics 365 CRM'de yeni bir kayıt olarak kaydetmek için kullanabileceğiniz bölümdür.Excele yeni satır ekler.

Yenile: Excel sayfasındaki verileri yeniler. Dynamics 365 CRM'den yeni değişiklikleri alır ve excel sayfasını güncellenmiş verilerle yeniden yükler.

Yayınla: Excel sayfasında yapılan değişiklikleri Dynamics 365 CRM 'ye aktarın. Verilerinizde excel sayfasında değişiklik yapabilirsiniz ve değişiklikleri yaptıktan ve verileri onayladıktan sonra, Dynamics 365 CRM 'deki tüm değişiklikleri uygulamak için bu butonu kullanın.

Filtre: Excel sayfasında bulunan verilere filtre uygulayın. Varsayılan olarak, "VE" koşulu uygulanır. Verileri Filtre penceresinde eklenen koşula göre yeniden yüklemek için ‘Yenile’ düğmesini kullanın.



Yeni kayıt oluşturun ve mevcut kayıtları güncelleyin

Verileri düzenlemek istediğiniz excel sayfasındaki hücreye gidin. Metin, çok satırlı, para, datetime, Lookup, owner, optionset vb. Her türlü alanı ayarlayabiliriz.


Seçenek kümesi için eklenti panelinde seçebileceğiniz seçenekler elde edersiniz. Sahip ve arama alanı için eklenti panelinde kullanıcı kayıtlarının ve ilgili varlığın kayıtlarının listesini alırsınız.

Seçenek kümesi

Seçenek kümesi alan türü için yeni değeri seçmek için listeden seçeneği seçin. Aynı şey Boole türü alan için de geçerlidir.


Arama (Lookup)

Yeni arama değerini seçmek için kayıt listesinden kaydı seçin.

Örneğimizde ,Sahibi alanını tıkladıktan sonra Microsoft PowerApps Office penceresinde bu alana gelebilecek değerler listelenir. Bu listeden bir kayıt seçebilirsiniz.

Yeni kayıt oluştur

Bir tabloya yeni bir satır eklemek için "Yeni" düğmesini tıklayın.Excelinizde yeni kayıt girişi için bir satır belirecektir. Gerekli tüm alanlar için veri girin. Excel sayfasındaki değişiklikleri yaptıktan sonra değişiklikleri Dynamics 365 CRM'ye kaydetmek için Yayınla'yı tıklayın.


Başarılı bir yayımlama işleminden sonra , 'Yayım Başarılı' mesajı alırsınız.


Sonrasında excel üzerinde yaptığınız değişiklikleri Dynamics 365 CRM üzerinde görebilirsiniz. 


Salt okunur alan 

İndirilen excel sayfası, varlığın tüm alanlarını gösterir. Ancak salt okunur alanı değil, yalnızca düzenlenebilir alanın verilerini güncelleyebiliriz. Eğer salt okunur bir alan üzerinde güncelleme işlemi yaparsanız yayımlama sırasında hata çıkacaktır.

Güvenlik

Excel üzerinde eklentiye hangi kullanıcı ile bağlanırsanız o kullanıcının yetkilerine göre excelde işlem yapabilirsiniz.

Örneğin,bir yönetici olarak olası satış varlık excel sayfasını indirir ve diğer olası satışları okuma erişimi olmayan bir kullanıcıyla paylaşırsanız, o kullanıcı yalnızca kendisine ait olan olası satışları görebilir. Bu özelliği Excel sayfasında kullanırken Dynamics CRM güvenliği uygulandığından güvenlik konusunda endişelenmemize gerek kalmaz.

Sonuç

Sonuç olarak verileri doğrudan Dynamics 365 CRM ortamında düzenlemenin bu yeni yolu çok kullanışlı ve daha hızlıdır. Excel sayfasındaki değişiklikleri yapmaya devam edebilir ve tüm veri değişikliklerini tek bir tıklamayla Dynamics 365 CRM'de yayınlayabiliriz.

Dynamics 365 - İş Süreci Akışları için Güvenlik Rollerini Yapılandırma

(Configuring Security Roles for Business Process Flows)


Bazen belirli kullanıcıların Dynamics CRM 'de belirli İş Süreci Akışını görmesini veya kullanmasını kısıtlamanız gerekebilecek durumlar olabilir. Bu işlem eski versiyonlarda oldukça basit bir süreçti ama Dynamics 365 te bu işlem için konulan buton ile bu işlemler yapılamıyor.

İş süreci akışımızı seçmeye başlıyoruz. Ayarlar> Özelleştirmeler> Sistemi Özelleştir> İşlemler.



Formun üst kısmındaki "Güvenlik Rollerini Etkinleştir" adı verilen düğmeyi göreceksiniz  ama işin zor kısmı geliyor! Dynamics 365'de bu butona tıkladığınızda aşağıdaki gibi bir sayfa geliyor.



 Seçilen rolleri onaylamak için herhangi bir düğmemiz yok, bu yüzden çoğunlukla X'e basıyoruz, sonunda iş süreci akışındaki değişiklikleri kaydet ve Tüm Özelleştirmeleri Yayınla gibi  hiçbir şey bulunmuyor.
Bunun yanısıra X düğmesine bastığımızda sistemdeki güvenlik rolünü siliyor!

Aslında Güvenlik rollerini Etkinleştir butonuna bastığımızda aşağıdaki ekran görüntüsündeki gibi bir pencere açılmalı ve burada rolleri seçtikten sonra Tamam butonuna tıklamamız lazım.



Dynamicss 365 te bu ekrana aşağıdaki gibi ulaşabiliriz

Bu ekrana ulaşacak linki kendimiz üretmemiz gerekiyor. Bunun için iş süreci akışımızın sistemdeki guid degerine ihtiyacımız olacak. Bu degeri de en basit olarak iş akışı süreci formunun lnkinden alabbiliriz.


https://xxxxx.crm4.dynamics.com/tools/dialogs/RoleAssignment.aspx?dType=1&oid=%7b<bu alana iş akışının guid degeri gelecek>%7d

Örnek Link

https://gkhnmnts.crm4.dynamics.com/tools/dialogs/RoleAssignment.aspx?dType=1&oid=%7b9F1EFD63-8660-4D80-B8CE-600CC40C6FF0%7d

Daha sonra oluşturduğumuz bu linki tarayıcımızda açtığımızda iş süreci akışı için güvenlik rolü seçebileceğimiz sayfa açılacaktır.


Açılan sayfa üzerinde oluşturduğumuz iş akışı sürecini hangi roller için etkinleştireceğimizi seçip Tamam butonuna tıklıyoruz.

Dynamics 365 - Hızlı Oluştur Formu Tarayıcıda Açılamama

Quick Create Form not working in Chrome




Tarayıcı olarak Google Chrome kullanıyorsak , hızlı oluştur formu  bazen takılıyor ve formdaki alanlar görünmeyebiliyor. Aslında form yükleniyor ama sayfanın yüksekliği 0 olarak set edildiğinden formdaki alanlar görünmüyor.



Uygun bir düzeltme yayımlanana kadar bu sorunu çözmek için 2 yaklaşımım var, ancak ikisi de desteklenen bir değişiklik olmayacak.

Her iki çözüm de, DOM'yi değiştirmek ve iFrame'in yüksekliğini ayarlamak için aynı JavaScript'i kullanır.

Yöntemlerden biri ,aşağıdaki script metodunu hızlı oluştur formunun onload ında çağırmaktır.Bu şekilde açılan frame in yüksekliğini verebiliyoruz.

function chromeQuickCreateFix() {

    var isChrome = true;
    var chrome = navigator.userAgent.indexOf('Chrome') > -1;
    var explorer = navigator.userAgent.indexOf('MSIE') > -1;
    var firefox = navigator.userAgent.indexOf('Firefox') > -1;
    var safari = navigator.userAgent.indexOf("Safari") > -1;
    var camino = navigator.userAgent.indexOf("Camino") > -1;
    var opera = navigator.userAgent.toLowerCase().indexOf("op") > -1;
    if ((chrome) && (safari)) safari = false;
    if ((chrome) && (opera)) isChrome = false;

    if (isChrome) {
        if (window.top.document.getElementsByClassName("mscrm-globalqc-iframe")[0].style.height == "0px") {
            window.top.document.getElementsByClassName("mscrm-globalqc-iframe")[0].style.height = "300px";
        }
    }
}

Dynamics 365 Javascript - Arama Alanına Filtre Ekleme (Add Pre-Search Filters For Lookup)

Çoğu zaman, doğada dinamik olan bazı diğer değer / koşullara dayanarak arama için arama sonuçlarını filtrelememiz gereken bir durumla karşı karşıyayız.

Örneğin, bir fırsat üzerinde "Birincil Satış Temsilcisi"  adında arama alanı olsun . Daha sonra bu alanda yalnızca Satış Ekibinin bir parçası olarak bulunan üyeleri göstermek için “Birincil Satış Temsilcisi” aramasına filtre ekleyebiliriz.

CRM 2013 ile birlikte gelen bu özellik sayesinde  bu filtreler OnLoad () olayında javascript web kaynağına dinamik olarak eklenebilir.

Bu özelik sayesinde birden fazla varlık seçilen alanlar için aşağıdaki gibi filtreleme eklenebilir.

Örneğin , Randevu formunda Katılımcıların girildiği alanda sadece İlgili Kişi kayıtlarının gelmesin istiyorsak aşağıdaki gibi alana filtreleme ekleyebiliriz.