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.
Last month I posted about how to create basic email alerts fired from Event Base Alerts (https://potatoit.kiwi/2016/11/06/basic-email-alerts-event-based-alerts/)
Which is nice and lightweight and all contained within the M3BE. However it is pretty limited with only three different filters that you can define. As I mentioned in the previous post, you can user e-Collaborate or ION – of-course I missed Event Analytics as another option – it has a drools engine for us to define rules and then ‘do stuff’ 🙂
This post is about the ‘do stuff’ being send an email to a couple of people.
I’m waiting for a database export when it occurred to me that I haven’t discussed the Customer Extension table which is really terrible as I’ve been using it for quite a while and it is awesome!
The customer extension table APIs allow us to store data within M3 that M3 doesn’t have fields with. There are some fantastic examples in the net change reports where it is combined with the native M3 events to populate data based on different events automatically, and of-course we can use them through the APIs to store additional data. We can also incorporate these values in to the new style ListViews without any code!
The APIs provided are quick and easy to use.
This post is to provide a Jscript which allows you to add a TextBox to a panel and it will store the data from the TextBox in the customer extension table – how often do people want to do that? 🙂
There are many ways to extract data from the APIs in M3, but often you need information that isn’t provided via the native APIs or the native APIs purely don’t exist for the table you want to query.
But over the years there have been a number of ways that you can extract data natively from the APIs without expensive mods or using webservices. The methods to do this can seem a little convoluted and had some shortcomings where you can quickly run out of sort orders on popular tables in the older versions of M3, but by the nature of the native methods we enforce good practices of using indexes. I typically make a concerted effort to use these APIs rather than webservice calls as they tend to be quicker, and require less configuration outside of the M3BE.
We have 3 different ways I’m aware of to set up custom data extraction via the APIs and this post provides a rough and ready run through of them.
MNS185 – M3 Browse Definition. Open
CMS010 – M3 Information Browser Category. Open
Something that I don’t see talked about very often is the Event Based Alerts built in to M3, it’s a cheap, quick and easy way to notify people that something happened within M3.
We of-course have the options of using e-Collaborator or ION, but that feels a little heavy handed for a number of tasks.
This is a quick rough guide on how we can create a lightweight event that will notify us when the full description of an item changes.
Programs we will use:
CMS045 – M3 Event Subscription. Open
CMS047 – M3 Event Based Alerts. Open
CRS111 – M3 e-mail Address. Open
CRS427 – M3 Application Message E-mail Param. Open
CRS424 – M3 Settings – Application Messages
CRS420 – M3 Application Message. Open
MNS051 – M3 Subsystem Job. Open