I'm trying to upgrade an existing Contact ExtenderExtender from SuperOffice 8.5 to SuperOffice 9.2R07 (the latest version) and are having trouble to get it to work. I have read the article from Tony about how to use the Find API (https://community.superoffice.com/en/content/content/netserver-sdk/netserver-9.x/superoffice-find/), but I can't see that this explains changes that affect ExtenderExtender. But, please let me know if there are something I don't see...
To make sure no other code can affect my EE, I tested this code on a blank 9.2R07 installation:
[ArchiveExtenderExtender("CrmiContactExtenderExtender", typeof(CombinedContactExtenderBase), int.MaxValue / 2)]
public class CrmiContactExtenderExtender : TableExtenderBase<ContactTableInfo>
protected const string ColumnNameTitle = "crmiTitle";
protected ArchiveColumnInfo _colTitle = new ArchiveColumnInfo(ColumnNameTitle, "Title", "Title", Constants.DisplayTypes.String, true, true, "10c", Constants.RestrictionTypes.String);
_colTitle.IconHint = "CRMI";
protected override void InnerModifyQuery()
// My code to mapp return fields
protected override ContactTableInfo SetJoin()
var contactTi = (ContactTableInfo)Parent.TableToExtend;
// My custom join criterias
I intentionally left out my custom code for the methods InnerModifyQuery and SetJoin.
When adding the DLL to SuperOffice, the new criteria is visible inside Find/Selection:
So, my EE are read by SuperOffice and the constructor is called. Before starting SuperOffice I have attached Visual Studio to the IIS process running SO92 R07 to verify this.
If I now use my custom Title criteria and specify something like this:
and press Find button. Neither SetJoin nor InnerModifyQuery are called (I have breakpoints in my code). It looks like SuperOffice just ignore my EE. Why?
Is the use of CombinedContactExtenderBase as extender class "invalid"? Based on this forum post from 2017 (https://community.superoffice.com/en/developer/forum/rooms/topic/netserver-api-group/core-components/extending-an-archive-to-include-extrafield/) Marek says:
"... In the meantime, a possible, partial solution is to use the FindContactExtender as the target, instead of ContactExtenderBase. That works in Find, but not everywhere else. Another possible target is the CombinedContactExtenderBase, which is further up the hierarchy and gives you Find as well as Selection functionality. ..."
I have similar EE for Person where I use CombinedPersonExtenderBase, and they work as expected.
Any ideas will be appreciated. Thank you