
Gaye Dinç
12 August 2025
Bir şirkette tüm iş süreçlerinin doğru ve verimli işlemesi için doğru veriye sahip olmak kritik önemdedir. Yanlış girilen müşteri e-postaları, eksik adresler, tutarsız fiyat bilgileri gibi durumlar satış ekibinden raporlara, otomasyonlardan müşteri deneyimine kadar her şeyi olumsuz etkileyebilir.
Salesforce’ta bu veri kalitesini korumanın en güçlü yollarından biri Validation Rules (Doğrulama Kuralları)’dır.
Bir validation kuralı belirlediğiniz standartlara uymayan verileri kaydedilmeden önce tespit eder ve kullanıcıyı uyarır.
Bu kurallar formül veya ifade kullanarak True/False değeri döndürür:
- True → Veri geçersiz, kayıt engellenir ve hata mesajı gösterilir.
- False → Veri geçerli, kayıt işlemi devam eder.
Örneğin;
Bir bankada müşteri temsilcisi yeni bir kredi başvurusu kaydı açarken TC Kimlik Numarası alanına 11 haneli olmayan bir değer girdiğinde sistem kaydı reddedip “TC Kimlik Numarası 11 haneli olmalıdır” şeklinde uyarı verir.
Validation Rule’un Temel Unsurları
Bir validation kuralı şu parçalardan oluşur:
- Formül / İfade
- Veriyi kontrol eden mantık (True/False döndürür).
- Örn: LEN(Phone) <> 10 (Telefon numarası 10 haneli değilse True döndürür).
- Hata Mesajı
- Kullanıcıya neyin yanlış olduğunu net olarak anlatır.
- Örn: “Telefon numarası 10 haneli olmalıdır.”
- Hata Mesajı Konumu
- Belirli bir alanda (Field-level) veya sayfa üstünde genel olarak gösterilebilir.
Örneğin;
Bir e-ticaret firmasında müşteri adresi girilirken posta kodu alanına harf yazıldığında formül NOT(ISNUMBER(PostalCode)) True döndürür ve kullanıcı “Posta kodu yalnızca rakam içermelidir” mesajı ile uyarılır.
Validation Rule Nerelerde Kullanılır?
Validation kuralları hem standart hem de özel Salesforce nesnelerinde uygulanabilir:
- Objeler: Account, Contact, Opportunity gibi.
- Alanlar: Belirli bir alanın giriş kurallarını zorlamak için.
- Campaign Members: Kampanya katılımcı verileri doğrulamak için.
- Case Milestones: Servis süreçlerindeki kilometre taşlarını kontrol etmek için.
Örneğin;
Bir insan kaynakları (IK) uygulamasında “İşe Başlama Tarihi” alanı her zaman “Bugün” veya sonraki bir tarih olmalıdır. Geçmiş bir tarih girildiğinde sistem kaydı reddeder.
Salesforce’ta Validation Rule Ekranı ve Fonksiyonlar
Validation Rule ekranına ulaşmak için:
- Setup (Sağ üst köşedeki dişli çark → Setup)
- Object Manager
- İlgili objeyi seçin (ör. Account, Contact, Opportunity)
- Sol menüden Validation Rules’a tıklayın
- New butonuyla yeni kural oluşturun veya mevcut bir kuralı düzenleyin
Örneğin;
Bir satış ekibi yöneticisi Opportunity nesnesinde “Close Date bugünden önce olamaz” kuralı eklemek için Object Manager’dan Opportunity nesnesini açar, Validation Rules sekmesinden yeni kural ekler.
Validation Rule Ekranında Bulunan Alanlar
Validation Rule ekranında şu bölümler vardır:
- Rule Name → Kuralın sistem içindeki adı (boşluksuz ve özel karakter kullanmadan).
- Description → Kuralın ne işe yaradığını açıklayan not.
- Active kutusu → Kuralın aktif/pasif durumunu belirler.
- Error Condition Formula → Asıl kontrolün yazıldığı formül alanı.
- Check Syntax butonu → Formülünüzün doğru olup olmadığını kontrol eder.
- Error Message → Kullanıcıya gösterilecek hata mesajı.
- Error Location → Mesajın hangi alanda veya sayfanın üstünde gösterileceğini belirler.
Validation Rule Formüllerinde Kullanılan Semboller
Formül yazarken sıkça kullanılan semboller:
| Sembol | Anlamı | Örnek |
|---|---|---|
| = | Eşit | StageName = "Closed Won" |
| <> | Eşit değil | ISPICKVAL(Status, "Active") <> TRUE |
| > | Büyüktür | Amount > 10000 |
| < | Küçüktür | CloseDate < TODAY() |
| >= | Büyük veya eşit | Discount >= 0.1 |
| <= | Küçük veya eşit | Age__c <= 18 |
| & | Metin birleştirme | FirstName & " " & LastName |
En Çok Kullanılan Fonksiyonlar
Validation Rule’larda onlarca fonksiyon vardır ama en sık kullanılanlar şunlardır:
| Fonksiyon | Açıklama | Örnek Kullanım |
|---|---|---|
| ISBLANK() | Alanın boş olup olmadığını kontrol eder. | ISBLANK(Phone) |
| ISNUMBER() | Değerin sayısal olup olmadığını kontrol eder. | NOT(ISNUMBER(AccountNumber)) |
| ISPICKVAL() | Picklist alanında belirli bir değer seçilmiş mi kontrol eder. | ISPICKVAL(Status, "Closed Won") |
| CONTAINS() | Metin içinde belirli bir ifadeyi arar. | CONTAINS(Email, ".com") |
| LEN() | Metnin karakter uzunluğunu döndürür. | LEN(PostalCode) <> 5 |
| AND() | Tüm koşullar doğruysa True döner. | AND(ISBLANK(Phone), ISBLANK(MobilePhone)) |
| OR() | Koşullardan biri doğruysa True döner. | OR(ISBLANK(Email), ISBLANK(Phone)) |
| NOT() | Sonucu tersine çevirir. | NOT(ISNUMBER(PostalCode)) |
| TODAY() | Bugünün tarihini döndürür. | CloseDate < TODAY() |
| YEAR() | Tarihten yıl bilgisini alır. | YEAR(StartDate__c) <> YEAR(TODAY()) |
| RIGHT() | Metnin sağdan belirli karakter sayısını alır. | RIGHT(Website,4) <> ".com" |
| TEXT() | Picklist değerini metne çevirir. | TEXT(StageName) = "Prospecting" |
Örneğin;
- ISPICKVAL(Status, "Closed Won") → Bir satış kazanıldığında ek alanların doldurulmasını zorunlu kılmak için.
- AND(ISBLANK(Phone), ISBLANK(MobilePhone)) → Hem sabit hem cep telefon numarası boş bırakılırsa hata vermek için.
Adım Adım Validation Rule Oluşturma
Örnek: Hesap numarası tam 8 karakter olmalı
- Setup → Object Manager → Account
- Sol menüden Validation Rules’a girin
- New butonuna tıklayın
- Bilgileri girin:
- Rule Name: Account_Number_8_Characters
Error Condition Formula:
LEN(AccountNumber) <> 8Error Message:
Account number must be 8 characters long.
- Check Syntax ile doğrulayın
- Save ile kaydedin
Örneğin;
Bir lojistik firmasında sevkiyat numaraları 8 haneli olmalıdır. Yanlış girilen numaralar hem depo hem de kargo takibini aksatır. Bu kural hatalı numaraların sisteme girmesini engeller.
Validation Rule’da ‘True’ = Hata” Mantığı
Validation Rule ekranındaki Error Condition Formula alanı “hatalı/istenmeyen durum” gerçekleştiğinde TRUE dönmelidir.
Yani istediğin durumu yazarsan kural hep hata verir. İstemediğin durumu yazmalısın ki “True → hata” tetiklensin.
Yanlış vs Doğru
Amaç: Amount 0’dan büyük olmalı.
Yanlış (istediğin durumu yazmak):
Amount > 0Bu formül TRUE olduğunda hata üretir. Yani Amount gerçekten 0’dan büyükken hataya düşer. İstemediğimiz şey bu.
Doğru (istenmeyen durumu yazmak):
Amount <= 0Amount 0 veya altındaysa (istenmeyen durum) TRUE döner → hata mesajı gösterilir. Amount > 0 olduğunda FALSE döner → kayıt yapılır.
Boş (blank) değerleri nasıl ele alacağım?
Salesforce formüllerde boş sayısal alanlar bazen 0 gibi davranabilir. İhtiyacına göre iki senaryo:
Blank’a izin ver, sadece pozitif değilse hata ver:
AND ( NOT(ISBLANK(Amount)), Amount <= 0 )- Amount boşsa: NOT(ISBLANK(Amount)) FALSE → kural çalışmaz (hata yok).
- Amount dolu ve ≤ 0 ise: TRUE → hata.
Blank’a izin verme, hem boşsa hem ≤ 0 ise hata ver:
OR ( ISBLANK(Amount), Amount <= 0 )- Amount boşsa: TRUE → hata.
- Amount 0 veya altındaysa: TRUE → hata.
İş Kuralına Bağlama - Günlük Hayattan Senaryo
“Closed Won” fırsatlarda Amount mutlaka pozitif olmalı ve boş olamaz:
AND (
ISPICKVAL(StageName, "Closed Won"),
OR(
ISBLANK(Amount), Amount <= 0
)
) Error Message: For Closed Won, Amount must be greater than 0.
Günlük Hayattan Benzetmeler
- Turnike / Güvenlik Kapısı: “Kartı olmayan geçemez” kuralı yazarken “Kartı var” değil “Kartı yok” durumunu kontrol edersin.
- Yanlış: HasBadge = TRUE (Kartlıyken durdurursun)
- Doğru: HasBadge = FALSE (Kartsızsa durdurursun)
- Yaş Sınırı: “18 yaş altı giremez” kuralı Age < 18 olarak yazılır; Age ≥ 18 yazarsan 18’den büyükleri engellersin.
Sık Düşülen Tuzaklar ve İpuçları
- İstediğin şartı yazma, istemediğin (hatalı) şartı yaz.
- Blank davranışı netleştir: Boş değere izin verecek misin? ISBLANK() ile açıkça belirt.
- Hata mesajını kullanıcıya göre yaz:
- Kötü: Invalid amount.
- İyi: Amount must be greater than 0 (no blanks).
Örnek Validation Kuralları ve Senaryolar
1. Hesap Numarası Sayısal Olmalı
AND (
NOT(ISBLANK(AccountNumber)),
NOT(ISNUMBER(AccountNumber))
) - Amaç: Hesap numarası boş değilse sayısal olmalı.
- Hata Mesajı: "Account Number is not numeric."
Örnek: Bir banka CRM’inde hesap numarasına harf girilmesini önlemek.
2. Tarih Mevcut Yılda Olmalı
YEAR(My_Date__c) <> YEAR(TODAY())
- Amaç: Girilen tarih, bugünkü yıl içinde olmalı.
- Hata Mesajı: "Date must be in the current year."
Örnek: Bir eğitim şirketinde “Sözleşme Bitiş Tarihi” mevcut yıl içinde olmalı. Gelecek yıl veya geçmiş yıl tarihleri sisteme kaydedilmez.
3. Maaş Aralığı Doğrulaması
(Salary_Max__c - Salary_Min__c) > 20000
- Amaç: Maksimum maaş ile minimum maaş arasındaki fark 20.000 USD’yi geçmemeli.
- Hata Mesajı: "Salary range must be within $20,000. Adjust the Salary Max or Salary Min values."
Örnek: Bir işe alım sürecinde, ilan edilen maaş aralığının çok geniş olmaması için kullanılır.
4. Web Sitesi Uzantısı
AND(
RIGHT(Web_Site__c, 4) <> ".COM",
RIGHT(Web_Site__c, 4) <> ".com",
RIGHT(Web_Site__c, 4) <> ".ORG",
RIGHT(Web_Site__c, 4) <> ".org",
RIGHT(Web_Site__c, 4) <> ".NET",
RIGHT(Web_Site__c, 4) <> ".net"
) - Amaç: .com, .org veya .net dışında uzantı kabul edilmesin.
- Hata Mesajı: "Web Site must have an extension of .com, .org, or .net."
Örnek: Bir B2B yazılım şirketinde müşteri web sitelerinin standart uzantılardan biri olması zorunlu tutulur.
5. Geçerli Fatura Ülkesi
OR(
LEN(BillingCountry) = 1,
NOT(
CONTAINS("AF:AX:AL:DZ:AS:AD:...:ZW", BillingCountry)
)
) - Amaç: ISO 3166 iki harfli ülke kodu dışında değer kabul edilmesin.
- Hata Mesajı: "A valid two-letter country code is required."
Örnek: Uluslararası bir e-ticaret şirketinde, fatura ülkesi mutlaka iki harfli ülke kodu (TR, US, DE vb.) olmalı.
En İyi Uygulamalar
- Hata mesajlarını kullanıcı dostu yazın
“Invalid data” yerine “Telefon numarası 10 haneli olmalıdır” gibi net ve yönlendirici olun. - Alan bazlı hata konumu kullanın
Böylece kullanıcı hangi alanın hatalı olduğunu anında görebilir. - Karmaşık formülleri optimize edin
Çok karmaşık doğrulamalar kayıt süresini yavaşlatabilir. Belirli kullanıcı gruplarını hariç tutun
Örn: Yöneticiler için kuralı devre dışı bırakmak:AND($Profile.Name <> "System Administrator", ...)
Örneğin;
Satış müdürleri tekliflerde özel indirim uygulama yetkisine sahiptir. Validation kuralı yalnızca normal satış temsilcileri için geçerli olacak şekilde yapılandırılır.
Sonuç
Validation Rules Salesforce’taki veri kalitesini korumak için vazgeçilmezdir. Doğru tasarlanmış kurallar, yanlış veri girişlerini en başta engeller, süreçleri hızlandırır ve raporlamanın güvenilirliğini artırır.
