Jak usunąć więcej niż 250 rekordów na raz?

Każdy, kto pracuje z Microsoft Dynamics CRM prędzej czy później zderzy się z problemem „jak usunąć tysiąc rekordów na raz”? Zdarza się, że zapełniamy system danymi testowymi, które musimy później usunąć lub najzwyczajniej w świecie potrzebujemy usunąć kilka tysięcy rekordów dowolnego typu z jakiejś przyczyny. Ostatnio coraz więcej osób mnie o to pytało, więc postanowiłem opisać kilka sposobów. Dla tych, co potrzebują odpowiedzi po angielsku, proponuję przetłumaczyć tę stronę w LiveTranslator’ze 😉

W interfejsie Dynamics CRM, w opcjach, możemy wybrać wyświetlanie w widoku maksymalnie 250 rekordów. Usunięcie 10000 testowo utworzonych klientów nadal będzie żmudne 🙂 = będzie wymagało od nas 40 razy zaznaczenia wszystkich rekordów i kliknięcia „Usuń”. Można zrobić to sprytniej!

Sposób 1 – usuwanie z pomocą kodu:

Jeśli lubisz kod i nie boisz się skompilować już gotowego kodu, Microsoft Dynamics CRM 4.0 udostępnia w SDK jeden przydatny request – BulkDeleteRequest. Jeszcze w Dynamics CRM 3.0 nie było możliwości usuwania wielu rekordów na raz przez wywołania web service’ów. W 4.0 to jest możliwe! Wystarczy zbudować kwerendę (QueryExpression), podać ją jako atrybut to obiektu typu BulkDeleteRequest, uzupełnić resztę właściwości i wywołać metodę Execute() w CrmService. Więcej informacji na ten temat znajduje się tutaj: http://msdn.microsoft.com/en-us/library/cc155955.aspx

 

Sposób 2 – unikaj cudownych płatnych narzędzi:

Jest pewna (niepolska) firma, która potrafiła zbić kapitał na niewiedzy użytkowników i… oferuje narzędzie, które wywołuje powyższy kod za opłatą! Ja sam zwalczam takie praktyki, dlatego nie polecam korzystania z takich narzędzi. Raczej lepiej poczytać SDK i samemu skopiować kod.

 

Sposób 3 – magiczny trick z dostosowaniami:

To jest niestety obejście, którego minusów trzebe być świadomym. Na szczęście nie ma ich wiele. Otóż, można usunąć dowolną liczbę rekordów dowolnego typu poza obiektami typów systemowych w bardzo prosty sposób – usuwając obiekt danego typu z systemu :). Przy tym rozwiązaniu robimy backup naszych dostosowań, usuwamy obiekt, którego rekordy chcemy usunąć i… importujemy ten obiekt z powrotem :). Do plusów tego rozwiązania należy niewątpliwie fakt, że usuniemy dowolną liczbę rekordów w super-krótkim czasie. Do minusów należy zaliczyć fakt, że obiekty custom mają tzw. ObjectTypeCode nadawany każdemu nowotworzonem obiektowi sekwencyjnie od 10000. Nasz nowy import nada naszemu obiektowi nowy numer i lepiej, żebyśmy byli świadomi w których skryptach używamy starego ObjectTypeCode =)

Mam nadzieję, że te wskazówki pomogą Wam usuwać mnóstwo danych z Waszego CRM’a! Jest jeszcze jeden sposób, który pozwala na wyświetlanie 5000 rekordów w widokach. Ale o nim nie napiszę – zbyt to „niesupportowalne” 😉

Reklamy

2 komentarze do “Jak usunąć więcej niż 250 rekordów na raz?

  1. A jest sposób na odchudzenie bazy ? Bo rekordy mimo usunięcia dalej znajdują się w bazie danych.

    • Zgadza się. Rekordy usuwane w CRM’ie nigdy nie są usuwane od razu w bazie. Mają za to znacznik (deletionstatecode), który świadczy o tym, że zostały usunięte. Usuwane są dopiero później i asynchronicznie przez tzw deletion process.

      Usuwanie rekordów z bazy jest niewspierane i niepolecane…

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s