CRM 4.0 Customization Synchronization Issue
Recently, I came across a very odd issue in CRM 4.0. This issue popped up because of an improper deploy/refresh in conjunction with the removal of an entity between test and production servers. It was very out of the ordinary, and I had not seen anything like it before.
The Issue at Hand
This issue was that we were unable to publish the Appointment entity. We were able to publish all of the other entities, but trying to publish the Appointment alone would fail. We could import previous versions of the entity, but all of them had the same effect. This is a critical issue because if you are unable to publish an entity, then you can no longer modify that entity.
So this is when I started to dig around. I first noticed that where was a blank lookup field on the Appointment form (create/new form).
After that I noticed the blank field was not on the customize entity form.
After seeing this, I understood why the problem was occurring. We had created an entity and later deleted it. Around that time we also did a restore to our dev server. In this process, we were able to delete the new entity while still keeping it on the form, something CRM usually prevents us from doing. This resulted in the blank field on the create form, and the issue above.
In order to remedy this, we re-created the Entity, giving it the same Entity name (eg: “tallan_example”). Once the entity was back in the system, we created the same 1:N relationship from “Example” to Appointment. When creating this relationship it was important to use the same relationship name that we did the first time the entity was created. Fortunately, we used the default naming convention, so we did not have a problem with this.
After the relationship was re-created, we were able the publish the Appointment entity! This caused the blank field to go away on the form.
Once this was done, going forward we could then remove the entity the proper way if necessary. I realize that this error could apply to any entity in CRM, and I hope it is of use to someone else.
Robert Lanzilli (email@example.com)