Request for comments about our customization features


I would like to get some feedback from you on our current feature set for customizations (CRMScript, macros, triggers, custom screens, extra tables, extra menus, web panels, etc).

We have introduced quite a bit of functionality the past couple of years, which I hope have had a positive influence on how you are able to customize your customers' solutions. Still, with all that functionality in place, I am sure you still have your struggles and challenges. There is nothing more accurate than getting the info directly from the source, and you are the guys (and gals) who are (hopefully) using the tools we supply on a daily basis. And so, I would love for you to tell me what you are struggling with or what we could do better in this area

Before your hit that Reply-button and start hammering away, please keep in mind:

  • This is just a request for some feedback. We cannot and will not implement all the crazy ideas you supply. We have other considerations as well. Just so that your expectations are reasonable :-)
  • Obviously, our resources are limited. So please think twice about what you suggest. If you suggest lots of ideas, the most important ones will drown. We are mostly interested in the ones that make a real difference for you and the solutions you create.
  • Both small features ("I would love a CRMScript function which....") and larger features ("Packages should support more entities") are interesting. Be specific, perhaps features can be implemented gradually. 
  • Again: we are talking about our customization features, not general product features.



RE: Request for comments about our customization features


We have been using CRMScript and the related customization features extensively for the last year, some suggestions:

* Better integration between SuperOffice UD Fields and CS, examples: Showing list values from crm, showing checkboxes (info fields v2 profiles)

* Convert some of the screens that are still in the c++ code to the system screens, example: new contact screen when creating a new ticket

* Default CRMScript functions which parses the values coming from CRM Archive System ([I:], etc)

* Default functionality to archive a email you send using the CRMScript classes in SuperOffice CRM as email. (we got multiple customers requesting this)

* Better autocomplete in CRMScript Editor, (object arrays, is it .push() or .pushBack, the editor doesnt know)

* Change the CodeMirror tabsize back to the default value of 4 ;)

And something which propably is a complete seperate project: Customer Service API's in NetServer! (Esecially in the NetServer Services, NetServer Core we have succesfully build wrappers that can insert tickets (TicketRows) and in extra tables (using OSQL) with the correct business logic behind it)



Av: David Hollegien 13. sep 2018

RE: Request for comments about our customization features

Hi Sverre,


First of all, I must say how very well appreciated it is to ask us for input! Kudos for that!

Some requests from my side:

- Now we have field types for Project relation, sales relation, company relation etc.... I would like to have a Product relation field type as well. This means e.g. that we could link requests to the same products that are used in Quote.

- easy way to show udef-list items in the screen profiling

- simple possibility to prevent customers from going into custom code / screens created by consultants. Sometimes we have customers trying to do a "small" modification themselves... 

- a "back" button to go to the list of screens after you have chosen one (like we have in scripts)

- numbers displayed in charts (not only when hovering)




Av: Niels van Broekhoven 14. sep 2018

RE: Request for comments about our customization features

Hi Sverre,

I suggest to following improvements (ordered according to importance):

1. Classes instead of structs, to better encapsulate CRMScript code. Stucts having private members and constructors would already help a lot. Maybe with getters and setters as well :-)
2. Additional events we would highly appreciate: BeforeSaveQuoteLine, AfterSaveQuoteLine, BeforeSaveInvoiceItem, AfterSaveInvoiceItem. This would greatly help in implementing quotes and invoices.
3. A function to grab the language of the logged on user in triggers.
4. Extra fields on InvoiceItems

Best regards


Av: Marc Eberhard 18. sep 2018

RE: Request for comments about our customization features


Thanks for your feedback! Some clarifications:

  • David: What do you mean with checkbox'es for InfoFields v2?
  • Marc: do you mean Service style extra fields on the invoice_entry table?



Av: Sverre Hjelm 19. sep 2018

RE: Request for comments about our customization features

Hello Sverre,

What I mean is when we reference an Checkbox CRM UD Field in a table or info fields v2, that it just shows the 0/1 value instead of a checkbox.

It would be great if we CS could get more understanding of the CRM UD fields. (or possibly merge it, but that is a MUCH larger project ofcourse.)




Av: David Hollegien 19. sep 2018

RE: Request for comments about our customization features

Hi all,

We appreciate your response! To be honest, I was expecting some more feedback. I know I told you to be reasonable, but I was still hoping for more than 3 replies to this issue. Does this mean our customization platform is almost perfect? If that is the case, I think I will be heading over here for a while: 

If, however, there are some other issues we should fix, please speak out (using your keyboard) now :-) 


Av: Sverre Hjelm 21. sep 2018

RE: Request for comments about our customization features

Hi Sverre, I'll insert my input here as well, although most of them have been reported directly to you previously.

Although not all these might fit in your request, but I'll post them anyways.

  • Notifications: It sometimes feels like it doesn't work correctly. Often the notification comes much later than the event has happened, and returns even if the notification has been clicked. What most people report is that they feel it's not helpful enough, which leads to it being more of an annoyance. Maybe add a more customizable way of triggering and displaying notifications?
  • Mailbox, set status: Let's say you have two active type statuses: "In queue" and "Active". I want all new requests created from emails to be automatically set to "In queue". I could use "Set as default" on the status, but then whenever a ticket which has been closed is being reactivated, it would be "In queue" in stead of "Active". So as a workaround I would like to be able to configure the Mailbox with a default status as we can set category and priority. Another workaround has been to create a trigger macro.
  • Support for udef values: As has been reported earlier, I want a better support for displaying udef values from Sales in Service, such as list values and datetime
  • Language variables: I want support for language variables in list names in Service (e.g Category names, Priority names, Status names, Usergroup names -> This works if you set the names in CRM Admin module, but not if you set them in Service)
  • Automatic update of lists: Perhaps not that important, but enable asynchronic update of lists so that you don't have to refresh the page to fetch new and newly updated tickets.


Amongst others

Av: Simen Mostuen Iversen 21. sep 2018

RE: Request for comments about our customization features

I think the important things have been mentioned. 

Topping the list for us is access to all Service entities via NetServer (web services).

One thing that has not been mentioned: better package management for deployment. Dealing with Service packages is always a hassle, especially in an agile development process with many versions, screen changes, database changes, etc. That fact that customers are able to view and modify custom solutions (like Niels mentioned) further complicates deployment.

Av: Matthijs Wagemakers 21. sep 2018

RE: Request for comments about our customization features

Another suggestion:

Better multi language support (custom menu items, profiles)

Av: David Hollegien 21. sep 2018

RE: Request for comments about our customization features

Hi Sverre

Extra field on invoice_entry table are highly welcome. This, along with missing events BeforeSaveInvoiceEntry and AfterSaveInvoiceEntry are major obstacles preventing use of invoice in service.

Best Regards


Av: Marc Eberhard 21. sep 2018

RE: Request for comments about our customization features

Hi Sverre

a few more requests from Markus and me.

  1. Access to product tables in service: currency, pricelist, priceunit, product, productcategory, productfamily, producttype
  2. Access to udef fields in service
  3. Access to project and sale table in service selections
  4. A simple way to compose "dynamic" custom screens, like in the forms editor. Perhaps in addition to the screen editor we have today.
  5. A possibility to implement dynamic behavior of custom screens. Often, we face the challenge of interdependent code selections or default settings dependent on values the user enters. Ideally, we would have another simple value on form elements (Extra field, List box) like "onvaluechange". There we could pass a function that populates another field based on the current value of the form element. Technically, this works by a predefined set of JavaScript functions that in turn use some kind of framework to grab database values, such as JQuery. Thus, on a screen element x_country we could say onvaluechange = populateExtraField(x_region, x_country_id, value) where x_region is the second form element, x_country_id the foreign key of the x_region table to grab the values from database, and "value" is the current content (country_id) of x_country.

Best regards, Marc

Av: Marc Eberhard 21. sep 2018

RE: Request for comments about our customization features

Look at this!!

Add support for decoding dbvalues from NetServer archives in CRMScript

Service: Packages: Support for locking local customizations

Great work @Sverre


Av: David Hollegien 21. sep 2018

RE: Request for comments about our customization features

Hi Sverre, kudos for reaching out for input. Here are some of my points in a non-prioritized order. Some big and some small.

  • Make company number (contact.number2) available in InfoFieldsV2 fieldselector.
  • Make all userdefined CRM fields available in InfoFieldsV2 fieldselector.
  • Improve the HtmlElement documentation when adding elements to screens. The plaintext documentation is hard to read and often misses functionality. Replace with a HTML / MD based documentation?
  • Add Ticket endpoint in NetServer. This is one of those big ones that will open up a whole new area we can utilize in Online.
  • Add a "back to Screens" button in the Screen screen (like you have in CRMScript screen).
  • Add some magic way that allows us to modify an existing systemscreen - while at the same time allowing it to be upgraded to new versions. It is a hassle today that we have to either modify a standardscreen, or create a copy of it. Both have their negative sides. Either our changes will be overwritten on upgrade, or we'll not get the new functionality when upgrading. Some way of giving us both ability to manipulate a screen, while also allowing upgrades would be really nice.
  • Keep CodeMirror tabsize like it is ;)
  • Make it possible for users to delete spam-emails without having Administrator level.
  • Handle CRM formatting (i.e. [I:123]).

In the bugreport that David linked to I see a suggested approach is to add a decodeDBValue(String) method, but I think it's a whole lot better to just make .toInteger() smarter.

String crm = "[I:123]";
Integer num = crm.toInteger();
//num should now be 123.

Same also applies to String's functions .toFloat(), .toDateTime() and .toDate() and .toBool(). See also this bug.

  • In the Scripts screen, make the pagesize a lot bigger than 50. I'm nearing 300 scripts in my database.
  • Make intellisense work in Screens Loading-scripts again. It only works in the first tab (Creation script), but not in the others. It broke a few versions back.
  • Add fields for "Updated by" and "Updated at" for all CRMScripts, so that we can see when they were last changed.
  • When scripts use %EJSCRIPT_START% etc then intellisense doesn't work. We keep commenting out those parservariables to find typos all the time. Perhaps instead of us having to wrap the code in %EJSCRIPT_START% and %EJSCRIPT_END% you could add a checkbox  where we can indicate if the code should be wrapped automatically?
  • When writing a reply or an internal message on a ticket it gets flagged as bold. There is no new info we haven't seen, so it shouldn't be bold.
  • Add a Yes/No functionality to the Messagebox we can pop up in the CRM client. Now we only have an OK button, but sometimes we want to ask users what to do.
  • In the ScreenChooser screen it should be easy to see which ones actually are in use. Now all unused screenchoosers look exactly the same as the used ones. To figure out if any screenchoosers are used we have to click on all of them.
  • The DataTable element should have filtering option at the bottom. The grey area at the bottom could contain filtering options just like archives in CRM has.
  • Add CodeMirror functionality for moving lines up and down via keyboard. (It's called swapLineUp and swapLineDown in CodeMirror).

Oh, last wish. Go over to the CRM guys and get them to ask for input as well ;)

Av: Frode Lillerud 21. sep 2018

RE: Request for comments about our customization features

Oh, and it would be nice if we could move entire groups of elements when designing screens, not just one HtmlElement at a time.

Now, if we want to move f.instance a table that has many elements inside it we have a hard time.

Av: Frode Lillerud 5. okt 2018

RE: Request for comments about our customization features

I would also like to see more features to help us to web-based integrations. In the new web-world it's all about microservices, REST, authentication, security, webhooks and so on. More functionality to keep SuperOffice in the game here would be appreciated.

  • Methods for working with JWT (JSON Web Tokens). We need to create, parse and validate.
  • Methods for using private/public keys to encrypt and decrypt text using certificates.
  • Better support for HTTP Verbs. Now we have GET and POST(ish). POST has some limitations, and all the others (PUT, PATCH, etc ) are not available.
  • "SuperOffice Functions"

Azure has Azure Functions, Google Cloud Platform has Cloud Functions,  and Amazon has similar as well. SuperOffice has most of the features available allready, but it's not very easy to use. We often create CRMScripts which are called via HTTP, but it feels kinda hacky. Over the years we've built our own libraries for setting HTTP Status codes, CORS, etc. I wish all of this was standard functionality.

The URL's to the scripts also are a bit messy for those functions.
A typical one is:
I wish we could expose them using a prettier URL, like

  • Would also like a method for creating and validating sessionKey variable. We have cases where clients use the SOAP webservice for authenticating (which creates a sessionKey), and calling many of the standard SOAP methods, but where we create additional webservices in CRMScript to add more functionality. For those webservices we require them to send in the same sessionKey, and we end up using SearchEngine against the database to validate that the sessionKey is valid. Standard method for doing that would be nice.
Av: Frode Lillerud 7. okt 2018