I have been using the SalesLogix SP3 RC Application Architect for a while, and in general it seems to be pretty stable but today I ran into an issue that prevents you from wiring up external assemblies against Business Rules and Events.
The issue seems to be that when you attempt to wire up an external assembly, the system checks the Sage.Entity.Interfaces.dll that is located in Program FilesSalesLogixSalesLogix. Problem is that the custom entities you are likely to have in your entity model are not in that assembly. The assembly in the SalesLogixSalesLogix is the OOTB assembly file.
Because of this you are likely to get an error similar to this:
Could not load type ‘Sage.Entity.Interfaces.ICUTOMENTITY’ from assembly ‘Sage.Entity.Interfaces, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null’. (mscorlib)
Replacing the Sage.Entity.Interfaces file with a custom version of your assembly file is no good, as doing so prevents the Application Architect from opening all together.
Doing so will result in an error like this:
Could not compile the mapping document: Account.hbm.xml (NHibernate)
persistent class Sage.SalesLogix.Entities.Account, Sage.SalesLogix.Entities not found (NHibernate)
Method ‘get_SOMECUSTOMPROPERTY’ in type ‘Sage.SalesLogix.Entities.Account’ from assembly ‘Sage.SalesLogix.Entities, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null’ does not have an implementation. (mscorlib)
This external assembly wiring functionality used to work in the SP2 version of Application Architect so it is definitely a new issue with SP3. As of right now the only way to wire up external assemblies for use in the SalesLogix entity model is by using a SP2 system and bundling up the wired events. Installing these wired events in a SP3 system then works normally.
The other option, I suppose, would be to modify the XML model files outside of Application Architect in order to get your assemblies wired up. Again, not an ideal solution.
I expect Sage will correct this soon but for now if you run into it, hopefully this will prevent you from thinking it is something you did wrong.