Pre-validation, Pre-operation and Post-operation on Synchronous and Asynchronous plugins in CRM 2011

Hi Everyone, I decide to write something about this topic since I don’t really get it. The Pre-validation stage will allow your plugin to run outside the SQL transaction, that means that the after the form is submitted, but before the record is created is where the plugin runs, the purpose should be to check a condition to allow the record creation.

The Pre-operation stage happens after the validation and before the values are saved into the database, at this point we should be sure that the record can be created, but we are still in time to change some bit and pieces.The Post-Operation operation plugin runs after the values have been inserted/changed in the database. A lot of fancy words, but the problem is that is not as straightforward as it seems.

Basically you are aware that if you use the first two steps the record is not there, so is pointless to look for it in the context (I like to use an early bound approach so I can use Linq queries to filter the data), but when you try to query an entity on a post operation plugin you expect (or at least I was expecting) to find out the record that I just created. Unfortunately is not like that, to manage to retrieve the record you just created you need to run the plugin in an asynchronous way. Otherwise as soon as you query the context (even if the record should already be there) you will receive a funny “null” as the result of the Linq query. Now if you keep that in mind should be easier to sort out weird errors.

NOTE: I wrote this article some time ago, the last paragraph is incorrect. There are multiple ways to perform the record creation and the example was maybe working for some CRM 2011 release.

I just link a couple of article that were useful for me: link1 link2

Programmatically retrieve Date formats from Excel cells

Hi Everyone, I had to fight against this issue, basically I had to retrieve a date from an Excel file and manipulate it as a DateTime. Easier said than done, the content of the cell was an unfriendly double, and I had no Idea on how to convert it. That’s the code that is doing the trick:

This is the article on Microsoft Knowledge base

Dynamics CRM 2011 CrmSvcUtil Filtered entities

When you are writing plugins for Dynamics CRM 2011, is useful to know the CrmSvcUtil.exe. Basically this tool allows you to generate a series of classes for manipulate entities in an early bound stage.

Still I don’t really get the difference between early and late bound (beside the comfort of using the intellisense). But anyway if you are in a context where you want to use the early bound and you will generate the file, is very annoying to have to manage a 6-10MB class files that contains all the entities in the organization (when at the end you will end up using no more than 15 – 20 of them). In that context is very useful to have a way to filter the output of the generated file. I found this article that allows you to do exactly that. I’m using the current version of the sdk, and i didn’t have any problems at linking the dll. Actually is working really well and allows you to filter the generating files (the one that i used in a web service and the one that i used as a plugin/workflow).

Here you can find the Microsoft official guide for the generation of the Entity file.

Here you can find the passages to generate a proxy class and connect to the crm from a web service.

I would like to copy Erik Pool article but i prefer to ask him first since will be an exact copy 🙂 maybe with some comments.

Australia?

E’ finalmente passato il primo mese, nonostante tutti i pipponi mentali pre-partenza sono arrivato, e nessuno mi ha mai chiesto numeri visa o cose strane, in aereoporto, a meno di non essere un cretino ( e di solito te lo leggono in faccia ) ti fanno passare senza un problema 🙂 E’ vero che sono rigidi, e se inizi a fare cose strane, tipo comprare biglietti andata-ritorno senza essere coperto da una visa, ti fanno passare dei guai ( un ragazzo che vive con me, in scadenza visto e’ andato in Nuova Zelanda, di modo da poter richiedere il visto turistico, ma dato che aveva comperato un biglietto andata-ritorno e non aveva il visto valido per la data di ritorno, lo hanno fatto deviare in asia :S poi con dei truschi degni di Diabolik, e una dose non moderata di fortuna e’ riuscito a rientrare ). Dopo un mese di cazzeggio sono ancora in ostello 🙂 ci sono un sacco di tipi strani, c’e’ uno che dorme nudo in camera mista, uno che russa quando beve e quando non beve sveglia tutti andando a lavorare alle 5 di mattina :S
Ho avuto poca fortuna con il lavoro, ma speriamo che le cose si raddrizzino. Ragazze ancora nessuna, ma a san Patrizio ho avuto il coraggio di provarci, e’ andata male T_T
Che altro, Melbourne e’ cara, una birra 8-9$ mangiare fuori non meno di 20$, mangiare schifezze costa abbastanza (una coca da mezzo 3$ ?_?) pero’ sembra che gli stipendi siano adeguati.

Fresh Start

Hum, sono piuttosto sicuro che nessuno passi più a visitare il mio blog. Sigh, è decisamente colpa mia, alla fine mi piacerebbe tenerlo più aggiornato ma la maggior parte delle volte non ho niente da raccontare.
Oggi inizio con una novità, ho deciso di partire per l’Australia. A dir la verità sono qualche passo più in là del decidere di andarci, ho già il visto annuale, e prima di febbraio conto di partire. A dirla tutta mi piacerebbe andare via già per Novembre, consacrandolo definitivamente a “mese delle partenze” (per Londra ero partito il 23 Novembre 2009), però la data è troppo vicina. Devo ancora disdire la casa, devo anche licenziarmi, dovrei aprire due conti in banca, uno eliminando le spese che devo sostenere con il conto Unicredit, e uno per avere liquidità una volta arrivato. Mi hanno detto che per i bonifici internazionali la spesa è di 25 euro al botto, quindi mi hanno sconsigliato di muovere pochi soldi alla volta. Devo andare anche a timbrare il passaporto, magari non serve, ma non si sa mai. Non vorrei mai trovarmi nella situazione di essere in dogana e sentirmi dire: “Torna a casa bello non ciai le carte in regola!”.

Il viaggio mi spaventa un po’, spero di riuscire a godermelo un po’ 🙂

Ricordi di una Pasqua diversa

Fa bene cambiare. Pasqua non è mai stata la mia festa preferita, Pasquetta è sempre stata un giornata una giornata tra sogno e realtà. Capita di decidere all’ultimo momento di fare qualcosa, ma a Pasquetta è impossibile. I negozi sono chiusi da due giorni prima, e Pasqua tra le mangiate in famiglia ti impone di dedicare tutto il tempo che rimane al riposo più assoluto e alla digestione. Quest’anno invece, preso da una strana euforia, mi sono auto-invitato assieme ad alcuni amici ad una “festa di Pasquetta”. E’ stata una decisione presa anche per cause di forza maggiore, il le condizioni meteo minacciavano pioggia e non sapevamo proprio dove andare :). Silvia ci ha concesso una scappatoia, dopo che, molto scherzosamente (ma forse anche no) mi sono auto-invitato alla loro festa. Non ho particolari aneddoti 🙂 solo che è stata un’ottima occasione per incontrare persone nuove. Erano tutti molto simpatici, anche se mi hanno dato del trentenne e mi hanno bocciato la pettinatura 😛 Spero di ripetere presto anche se adesso vivo lontano da lì 🙁
Ok lo ammetto è un post molto sterile, ma bisogna pur ricominciare da qualche parte ^_^

L’invidia è una brutta bestia

Oggi ho perso i buoni pasto, anzi oggi mi sono accorto di averli persi, quindici buoni pasto per il valore di 5,29 euro l’uno. E lo sconforto mi ha preso, e mi sono chiesto più di una volta come abbia fatto a smarrirli. Poi mi è venuto in mente che molto tempo fa avevo la cattiva abitudine di perdere il portafoglio, e mi sono ricordato che il numero di anni che è passato è in doppia cifra. Dalla doppia cifra sono arrivato a pensare di avere un’età notevole, che magari per chi è più vecchio non è poi così notevole, ma per il me che perde i portafogli è di sicuro difficile da assimilare. Poi mi è venuta voglia di scrivere, ogni uomo con un età notevole dovrebbe farlo, senza troppo rammarico e con lo scopo di infondendoci un po’ di saggezza, magari un buon proposito o un consiglio. Scrivendo e cercando di dare alle mie parole un senso e una forma, mi sono accorto che non sono poi così capace a scrivere, che la punteggiatura la butto un po’ a caso, che magari alla mia età certe cose dovrei saperle. E da qui è scaturita un’invidia incondizionata per chi, invece, riesce a scrivere bene. E riesce a dare l’idea di essere un personaggio, ad avere il portamento del narratore che anche senza essere onnisciente ha un’aria saggia. E così ho finito di scrivere e me ne sono andato a casa, senza buoni pasto e senza lode.

Tutorial: My first Webpage

Is a bit embarrassing but long time ago i promised myself that one day i would have wrote a tutorial. That day I wasn’t sure i would have wrote it in English but I took my time and today I finally started my first tutorial. Well this will be simple, just a couple of hints to start to publish a small Website.

Writing Web pages is not as hard as it seems, you just need to focus on what you want to show. So first of all you need to decide what kind of information you will provide.

Just to let you know, there are two kinds of websites, the simplest is the static one and the other is the dynamic one. Well, another classification can be done by looking at the content and the use of the website ( for example an e-commerce site like Amazon, or a blog platform like WordPress). You need to know that most of the sites that you will use and see will be dynamic, WordPress  i dynamic because allows you to insert new content without edit the HTML code, that implies the use of a programming language and an interaction with a database. So when you will start your first small project you will probably go for a simple static one.

To start doing it, you just need notepad. There are a lot of rules to write webpages, what you need to know is that a webpage is written in HTML( HyperText Markup Language) , that is a language that is working exactly like math parenthesis, you open something than you close it. You should be careful to open and close the parenthesis correctly, like in math you need to be careful 🙂 HTML have different tags, and each of them is used for a reason. Just to be precise, you should use the proper tags to write content on the internet, truth is that most of the people is writing the code randomly. Ill give you a small example of what should look like the code for an html page:

<html>

<head>

</head>

<body>My First Webpage</body>

</html>

This is a very simple webpage, she is static and a little sad, without graphics but we can work on it Later.

To be complete, just try to open a text editor (I’ll suggest this one, is called notepad++) write down what i wrote up there, than press File ->Save as->myfirstsite.html

After this you will have your first page with a simple text, and you will be able to open it with every browser, from Internet Explorer to Chrome. I hope that this tutorial will be useful to someone someday, i will try my best to write something more interesting.