Power Automate ile Döviz Kurlarını Dynamics 365 üzerinde güncelleme
Herkese merhaba öncelikle,
Malum hayatımızda artık bir power platform diye bir gerçek var. bunun içerisinde, dynamics 365’den tutun, power automate gibi hayatımızı kolaylaştıran bir cok araç ve ortam da mevcut. En önemli özellikleri ise, neredeyse Microsoft’un tüm bulut sistemleri ile entegre olması ve veri akışları yapılabilir durumda olması.
Bugünümüzün konusu ise, Power automate üzerinde, günlük olarak döviz kurlarını alan ve dynamics üzerindeki bir çözümümüz üzerindeki para birimlerini güncelleyen bir akış hazırlamak. Tabi benim örneğim bu şekilde ilerleyecek. Bunun dışında ilgili akışın son adımlarında değişiklikler yaparak, Microsoft Teams üzerinde açacağınız bir kanala yada sohbet grubuna belirli koşullara bağlı olarak mesaj bile gönderebilirsiniz. Bundan sonrası sizin hayal gücünüze kalmış. Örneğin, Dolar kuru Türk Lirası karşısında 8 Liranın üzerine çıktığında Microsoft Teams üzerinden size bir mesaj olarak bu bilginin gelmesini isteyebilirsiniz. Peki yapabilirmiyiz ? Tabii ki 😊 Neyi yapamayız dedik ki 😊
Şimdi ufaktan başlayalım isterseniz, Öncelikle https://make.powerapps.com/ adresinden Power Automate’e giriş yapıyoruz. Ardından, Sol menüden Akışları seçiyoruz ve yeni akış -> Zamanlanmış Bulut akışını seçiyoruz.
Ardından açılan popup üzerinde, Akışımıza bir isim veriyoruz, ve hangi periyorlarla çalışacağını, çalışmaya ne zaman başlayacağını seçiyor ardından Oluştur’a tıklıyoruz.
Harika! artık işe başladık, yolun yarısı bitti demektir. Peki sırada ne var.
Bundan sonra öncelikle, veriyi json formatında alacağımız yeri belirliyoruz. Ve ilgili veriyi alabilmek için öncelikle bu akışımızı sağ üstteki kaydet butonu ile kaydediyoruz ve ardından sol tarafta bulunan menüden Veri Seçeneği altındaki, özel bağlantılar seçeneğini seçiyoruz.
Burada ilgili veriler için Json apiyi veren ortam ile powerplatform arasında kendimize özel bir baglantı oluşturacağız. Ardından akışımız her çalıştığında bu veri bağlantısı üzerinden Json veriyi alarak, bize iletecek.
Aşağıdaki ekran görüntüsünde görüldüğü üzere, Özel bağlayıcılar alanına girdikten sonra, sağ üstte bulunan yeni özel bağlayıcı menüsü altındaki boş Akış seçeneğini seçiyoruz, ve açılan popup üzerinde akışımızın adını belirleyerek yolumuza devam ediyoruz.
Ben burada bağlayıcı adı olarak DovizKuruBaglayici girdim. Boşluk bırakmamam ve türkçe karakter kullanmamamın özel bir sebebi yok. Sadece, Power automate üzerinde ilgili akış ve eylemlere fonksiyonlar üzerinden erişmek istediğimde, boşluk karakterleri yerine alt çizgi “_” girmek türkçe karakterlerin Unicode değerlerini girmek gerekebiliyor. Bu tarz sorunlarla uğraşmamak için devamlı bu şekilde kullanıyorum.
Akışımızı oluşturduğumuzda, aşağıdaki gibi bir görüntü ile karşılaşacaksınız.
Bu ekranda isterseniz bir simge belirleyebilir, rengini değiştirebilirsiniz. Ama ben uğraşmayacağım. Önemli olan şu aşamada akışımızın düzgün çalışması.
Şimdi gelelim Döviz kurlarını Json olarak alacağımız yere. Ben stabil çalışması ve güvenilir olması sebebi ile, https://exchangeratesapi.io/ adresini kullanıyorum. Bu örnekte de bu adres üzerinden devam edeceğiz.
Yukarıdaki resimde görüldüğü üzere, ana bilgisayar adresine, exchangeratesapi.io giriyoruz. https ve sondaki Slash olmayacak. Ve ardından güvenlik aşamasına geçiyoruz.
Karşımıza güvenlik aşaması geliyor. Kullandığımız api üzerinde herhangi bir kimlik doğrulaması olmamasından dolayı burda işlem yapmadan tanım aşamasına geçiyoruz.
Yukarıdaki resimde görülen ekrana erişmek için öncelikle sol taraftaki eylemler bölümünden yeni eylem seçeneğini seçiyoruz. Ardından ise, Öncelikle işlem Kimliği bölümüne bir isim veriyoruz. Ben burada “ApiRequest” değeri girdim. Sonrasında İstek bölümündeki örnekten aktar seçeneğini seçiyoruz. Burada, ilgili api adresine, temel para birimimizin ne olduğu bilgisini geçiyor olacağız.
Açılan pencerede, url kısmına, https://api.exchangeratesapi.io/latest?base=USD yazıyoruz ve request type değerini get olarak seçiyoruz. Ardından içeri aktar diyerek, ilgili url üzerindeki parametre ve url path’i bizim isteğimize aktarılıyor olacak. İçeri aktar dedikten sonra, aşağıdaki gibi bir ekran görüntüsü ile karşılaşıyoruz.
Buradaki sorgu ile belirtilen kısım bizim temel para birimimizi parametre olarak bizden Power Automate akışımızda talep edecek. Burdaki işlemlerimiz tamamlandı. Şimdi Yukarıdaki bağlayıcı oluştur butonuna tıklıyoruz ve api ile Power Automate arasında veri bağlantısını oluşturacak olan Bağlayıcımız oluşmuş oluyor.
Şimdi power Automate üzerinde oluşturduğumuz akışa geri dönelim.
Burada hemen yeni adım diyerek çıkan pencerede arama ekranına Variable diyoruz.
Değişken butonuna tıkladıktan sonra, Değişken başlat eylemini seçiyoruz. İlgili eyleme bir isim veriyoruz. Ben “RateConv” ismini verdim. Değişken türünü ise, Dizi – Array seçiyoruz. Ardından değer olarak, aşağıda ilettiğim gibi Okumak istediğimiz verilere ait bir Json Verisi yüklüyoruz. Bunun sebebi, ilgili Json’I parse ederek, ilgili verileri bir döngü ile dönebilmek.
Kullandığımız Json ise,
[ { "Currency Name": "US Dollar", "Currency Code": "USD", "Locale": "en-US" }, { "Currency Name": "Turkish Lira", "Currency Code": "TRY", "Locale": "tr-TR" }, { "Currency Name": "Euro", "Currency Code": "EUR", "Locale": "en-US" } ]
Şimdi, ilgili Json verisini parse edelim.
Tekrar yeni adım diyoruz, ve arama kutusuna JSON yazıyoruz. Çıkan listede, Veri İşlemi seçip, Json Ayrıştırma eylemini seçiyoruz. İçerik kısmına, Dinamik içeriklerden bir nceki adımımız olan RateConv eylemini veriyoruz. Ardından içerik için ise, örnekten oluştur diyerek, bir önceki adımımızda girdiğimiz Json’I açılan pencereye giriyoruz ve bitti diyoruz. Aşağıdaki ekranda görüldüğü üzere, bizim için ilgili Json verisi parse edilerek şeması çıkartılıyor.
Şimdi sıra geldi, Az önce oluşturmuş olduğumuz veri bağlayıcısı aracılığı ile veri sorgulamaya. Bunun için yine Yeni adım diyoruz, açılan pencerede özel seçeneğine tıklıyoruz, ve bizim oluşturmuş olduğumuz bağlayıcı karşımıza çıkıyor. Sihir gibi değil mi 😊
Bağlayıcımızı seçtikten sonra karşımıza aşağıdaki gibi bir ekran çıkıyor ve bizden base isminde bir parametre istiyor. Hatırlarsanız, bağlayıcıyı oluştururken yeni bir eylem seçmiş ve burada, base=USD parametresi ile temel para birimimizi gireceğimizi belirtmiştik. Şimdi ilgili parametreyi girmeye geldi sıra.
Ben burada temel para birimimi dynamics 365 kurulurken USD olarak seçtiğim için USD olarak giriyorum. Sizin temel para biriminiz ne ise, onu girebilirsiniz.
Sıra geldi bize dönen verileri bir döngü ile gezmeye.
Tekrar yeni adım diyoruz, açılan ekrandan kontrol seçeneğini seçip, Her birine uygula’yı seçiyoruz
Bu aşamada her bir döngü içerisinde kullanılacak olan veriyi bizden istiyor. Aşağıdaki ekran goruntusunde de görüldüğü üzere, “Önceki adımlardan bir çıkış seçin” alanına, Parse ettiğimiz Json sonucunu veriyoruz. Bunun için dinamik içerik bölümünden JSON Ayrıştır seçeneğindeki Gövde’yi seçiyoruz. Ve ardından Eylem ekle butonuna tıklıyoruz.
Öncelikle, döngü adımımızın ismini, birazdan yazacağımız fonksiyonlarda kullanmak için adına Dongu diyoruz. Ardından çılan eylem ekranından yine kontrol seçeneğini seçiyoruz, ardından bu kez koşul diyoruz. Burda bir kontrol yapacağız. O anda döngüde olan verinin boş olmaması ve bizim istediğimiz kur verisi olup olmadığını kontrol edeceğiz.
Aşağıdaki ekran görüntüsünde görüldüğü gibi, koşulumuzun bir değer seçin alanına,
body('ApiRequest')?['rates']?[items('Dongu')['Currency Code']]
Kodunu yazıyoruz ve tamam’a tıklıyoruz. Koşulumuzu eşit değildir diyoruz, ve değer olarak ise, yine dinamik içerik bölümündeki ifade kısmına gelip null yazıyoruz ve tamam a tıklıyoruz. Bu kod, ApiRequest isimli adımımızdaki, json içerisinden rates dizisindeki veriler içinden, Dongu isimli adımımızın o anda gezmiş olduğu Currency Code değerine ait veriyi alıyor. Biz bu verinin boş olup olmadığını kontrol edeceğiz.
Hemen ardından döngü içindeki o anda gezilen değerin TÜrk lirası olup olmadığını kontrol etmek için ekle diyoruz. Ve satır ekle diyerek tekrar bir üst satırda girdiğimiz
body('ApiRequest')?['rates']?[items('Dongu')['Currency Code']]
Kodunu ifade bölümüne giriyoruz. Bu kez koşula eşittir diyoruz ve ardından degere ise, yine dinamik içerik bölümünden ifade kısmına gelerek string(‘TRY’) fonksiyonunu yazıyoruz. Ekranımızın son görüntüsü aşağıdaki gibi olacaktır.
Şimdi işlemlerimiz tamamlandı. Döngü içerisinde artık Türk Lirası’nın USD kuruna göre oranı ApiRequest ten gelen veriler doğrultusunda bulunduğuda, Evet İse bölümüne akışımız girecektir.
şimdi Evet ise kısmında Eylem ekle diyoruz. Açılan ekrandan Common Data Service (current environment) seçiyoruz, ve update a row eylemini seçiyoruz.
Aşağıdaki ekranda da görüldüğü üzere, Güncellenecek olan tabloyu para birimleri seçiyoruz. Ardından güncellenecek satıra ait Guid ID verisini giriyoruz. Döviz kuru olarak ise, dinamik içerik ekle bölümünden, ifade kısmına geliyoruz ve aşağıdaki fonksiyonu yazıyoruz.
float(body('ApiRequest')?['rates']?[items('Dongu')['Currency Code']])
BU fonksiyon, ApiRequest içerisinde bize iletilen rates dizisindeki veriler içerisinden o anda döngü içerisindeki verinin Currency Code değerine ait veriyi float(Ondalıklı sayı) türüne dönüştürüyor. Ve biz bu aldığımız değer, Para birimleri varlığındaki Döviz Kuru alanına yazıyoruz.
Ve mutlu son. Akışımızı kaydediyoruz. Son görüntü aşağıdaki gibi olacaktır.
Bundan sonraki aşamada ise, test ediyoruz. Akışımızın çalıştırma geçmişinden baktığımızda ise, akışın başarıyla çalıştırıldığını görüyoruz
Şimdi bakalım Dynamics 365 üzerinde verimiz güncellenmiş mi. An itibari ile bu kuru her ne kadar görmek istemesekte dynamics 365 üzerindeki para birimimiz de güncellenmiş görünüyor. 😊
Dilerseniz, Dynamics 365 üzerinde güncelleme yerine dediğim gibi Microsoft Teams üzerine aktarım yapılabilir. Ya da uzak bir DB üzerinde güncelleme yapılabilir. Bundan sonraki hayalinize kalmış.
Neredeyse her projede ihtiyacım olan bu akışın siz değerli okuyucular için de faydalı olabileceğini düşünerek bu yazıyı hazırladım. Umarım sizlere bir nebze dahi olsa faydası olur.
Daha nice yazılarda görüşmek dileği ile.
Soru ve sorunlarınız olursa, sitemizin forum sayfasından bize ulaşabilirsiniz.
Eline sağlık Semih, çok güzel bir makale olmuş.
Teşekkür ederim.
Merhaba, elinize sağlık. Rica etsem güncel PowerApps ekranları ile ve ingilizce olarak, kuru da TCMB den alınacak şekilde makaleyi güncelleyebilir veya yeni ekleyebilir misiniz ? Ekranlar epey değişmiş. Teşekkürler.