A few weeks ago I did a presentation at the Australia/New Zealand User Group meeting on the Gold Coast to really discuss that the M3 Grid Applications shouldn’t be as intimating as a lot of people find them, as part of the presentation, I also touched on monitoring. One of the points I had raised was monitoring Event Hub, some of you may have had the misfortune of seeing what happens when a subscriber can’t connect and we have a large number of events get queued (for example, through a mass change or through data loads) – and have had fun trying to recover when you run out of disk space.
One of the questions that came out after this was around the monitoring of Event Hub and how to check its health and the queues. At the time I wasn’t 100% sure on how it could be done from the grid. We can of-course monitor disk space and there is a /persistent directory on the file system that we can monitor but it’s a little clunky.
I’ve had a look and the good news is that there appears to be a Rest API from at least 2.1.9 which provides us with the information that we need in a json format.
Recently I did some work where we wanted to add a second ListView to a panel. We wanted to keep the ListView consistent with the look and feel of M3 ListViews but we were constrained with space on the panel, so I didn’t want the giant header we have in a normal ListView.
Normally, we’d just set up a new Style and use the BasedOn keyword to point us back to the M3 style. But well, JScripts don’t really lend themselves to XAML very well or so I thought! And to think I had spent so much time over the years trying to get this sort of thing working programmatically.
I stumbled across a the mention of that functions I’d normally explore on MSDN were depreciated and I should be looking at XamlReader (https://msdn.microsoft.com/en-us/library/system.windows.markup.xamlreader(v=vs.110).aspx) to create my styles so I did.
Over the years I’ve used a variety of methods to call things like PageDown from within my scripts, some more pretty than others.
You would think that in the Init() you can just call controller.PageDown() and all is good in the world.
var gDebug = null;
var gController = null;
var gContent = null;
public function Init(element: Object, args: Object, controller : Object, debug : Object)
gDebug = debug;
gController = controller;
gContent = controller.RenderEngine.Content;
And if you test with the Script tool within Smart Office it is…until you deploy it and then you get the “Duplicate request skipped” message in the logs 😦
I have a project that I am working on which involves the need to set the ListView filter fields.
Back when I was much younger and far more naïve 🙂 I would brute force my want to locate the control (https://potatoit.kiwi/2010/10/10/manipulating-smart-office-column-header-filter-values/). Years later I saw the light and stumbled across the fields but I didn’t ever get around to posting about it. Of course, I couldn’t remember where I had found the fields nor could I find a posting about it on my blog so I did some investigation.
I also wrote some code around exploring what I thought was the appropriate field list and expanded that as it became more apparent that I was on the right track, until finally I wrote some functions to test that I would actually use.
Another heads up. In 13.4 a bulk load API was introduced – so instead of having to send single transactions in a REST call, we can send multiple transactions.
KB: 1831472 “M3 Foundation Integration Guide for Developers” has an attached document that discusses the bulk load APIs (and some interesting other tidbits) and some example Java code.
Enterprise Search – the much lauded but often horribly misunderstood ‘google for M3’. I thought I had penned a post around IES and some fantastic information I had been provided via support by one of Infors staff when trying to track down why IES was not returning the results I had expected, but though started, it never got finished.
Roll on to this morning where I got an email informing me that there was a new document (KB: 1687355) on M3 Search examples, this is a PowerPoint with a lot of fantastic detail! Kudos Infor! Thank you Magnus for the heads up!
Link below for convenience:
Recently I was asked about Disaster Recovery and M3. And though I haven’t really embarked on discovery of how companies handle M3 and DR I do hear people say they struggle with the changing of IP Addresses.
Which prompts a, huh? Why are we talking about changing IP Addresses?
This post is really to discuss the DR that I set up for IFL and because I had run in to this perceived need for changing IPs.
For us, it worked well, wasn’t too expensive to implement, and cheap to run. We were lucky in that warm standby DR was perfectly adequate, our M3 DB was only about 60gig and the business was prepared to accept the potential loss of ~24 hours of data.