<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>META eight — Insights</title>
    <link>https://www.metaeight.com/posts</link>
    <description>Practical perspectives on Epicor ERP, Microsoft 365, and digital transformation from META eight.</description>
    <language>en-GB</language>
    <lastBuildDate>Mon, 25 May 2026 12:41:23 GMT</lastBuildDate>
    <atom:link href="https://www.metaeight.com/rss.xml" rel="self" type="application/rss+xml" />
  <item>
    <title>What&apos;s Wrong with Excel?</title>
    <link>https://www.metaeight.com/posts/whats-wrong-with-excel</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/whats-wrong-with-excel</guid>
    <pubDate>Mon, 25 May 2026 12:41:23 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>Excel is a great tool. So why is it a bad word around ERPs?</description>
    <category>Excel</category>
    <category>ERP</category>
    <category>Excel</category>
    <category>Kinetic</category>
    <category>teamwork</category>
    <content:encoded><![CDATA[<p>What’s wrong with using Excel?</p>
<p>Any time ERP is being discussed, Excel is a sore point. Excel is a niggle, an elephant in the room or an outright argument in the context of all sorts of systems, actually, in reporting, management, whatever.</p>
<p>What I notice is that there are often strong entrenched views in which neither side, pro-Excel or anti-Excel really understand each other. It’s a fight over something else that neither side quite acknowledge.</p>
<p>The core fact is that Excel is an extraordinary tool. It can do so much, in such a variety of ways, that it’s almost no exaggeration to say that at least in business terms it can almost do everything.</p>
<p>I was using Excel long before I got involved with ERP, and got deep into the VBA side, the code scripts below the surface of what most users see, so I know what it can do. I have made full standalone applications within Excel. And they stayed the way of doing those things for years in the places I worked.</p>
<h2 id="so-if-it-s-great-what-s-the-problem">So, if it's great, what's the problem?</h2>
<p>The perfect use for a spreadsheet has at least one of two key factors, preferably both:  </p>
<ol>
<li>It&#39;s for and by a single person.  </li>
<li>When you&#39;re done, you&#39;re done.</li>
</ol>
<p>Given those, Excel <strong>is</strong> great. Analysis, preparation of data, calculation. For you, or to pass on to someone who needs it. There&#39;s little better.  </p>
<p>Collaboration, as most people find out, is less ideal. Google Sheets and Excel online <strong>can</strong> be used collaboratively, but there&#39;s an art to doing so successfully, and a lot of that art is in knowing the limitations and when it&#39;s worth doing at all.  </p>
<p>Similarly, a spreadsheet that tells us something is brilliant, but one that has become an entire history starts to be a drag in various ways. A constantly-updated spreadsheet, or one with versions dating back to Dave who set it up in 2014, is the little piece of wood under the table that otherwise wobbles. It&#39;s not doing anything wrong in itself, but it&#39;s a sign of something that hasn&#39;t been fixed.</p>
<h2 id="horses-for-courses">Horses for courses</h2>
<p>When techy types complain that &quot;Excel is not a database&quot;, they aren&#39;t saying you can&#39;t use Excel for data.  </p>
<p>Databases, which are what ERP systems are built on, are optimised for scale and concurrency. What that means, in plain English, is that as more people use them more, and all at the same time, they keep working and stay consistent. So ERPs are the same, and if someone in the Finance department calls up the figures that the factory floor is working on, right now, both can rely on those numbers and not be held up. Spreadsheets aren&#39;t like that, and aren&#39;t intended to be, because <strong>they</strong> are optimised for flexibility.</p>
<p>And that&#39;s the trade-off of teamwork in general, isn&#39;t it? If you want to do what you like, work alone and let your genius flow freely. When you work with others, you gain all their capability as well as your own, but need some basic agreed rules so you&#39;re not all pulling in different directions.  </p>
<p>Which points to the real main reason those with a broader view – managers, consultants etc – tend to worry when spreadsheets become a critical part of how things are done. It <strong>might</strong> be completely fine, but too often it&#39;s a sign of individual workarounds in situations where standardisation and sharing would be better.  </p>
<h2 id="but-how-can-we-tell">But how can we tell?</h2>
<p>My rule of thumb is: if <strong>you</strong> need to know something, and you don&#39;t make changes to the ERP system as a result of your Excel work, you&#39;re fine. Export from the ERP and do what you need. If you&#39;re doing it regularly in the same way, you might want to think about alternatives to make whatever-it-is more efficient, but no harm is being done.  </p>
<p>If you pass the file around, or others are dependent on it or what you tell them from it, or data is fed back into the ERP, you have a problem even if you don&#39;t realise it. And you might not be uploading the data, necessarily, but adjusting things by hand based on your spreadsheet, which is as bad.</p>
<p>In those cases, the system that&#39;s running the business is blind to exactly those things, which means that people can&#39;t know what they need to, in ways that may not be clear to you.  </p>
<p>The table isn&#39;t wobbling right now, maybe, but ... someone is resting something vital on outdated data, things only work because one particular person has a way of doing it that only they know, and maybe hours a week are going into something that should be happening automatically.  </p>
<h2 id="so-what-can-we-do">So what can we do?</h2>
<p>Well, you can call META eight, for one option.  </p>
<p>What action you take (or we take for you) depends on what the underlying reason for the spreadsheet-in-the-process is.</p>
<p>Sometimes it&#39;s a lack of trust in the ERP data. Missing data, or suspected wrong values. Or even data pulled from elsewhere, like a supplier product or price list, or a map of delivery areas, that was never added or connected.  </p>
<p>Sometimes it&#39;s missing functionality or logic that doesn&#39;t exist in the ERP, so somebody has to do it another way.  </p>
<p>Sometimes it&#39;s really only that it&#39;s either easier, or people don&#39;t know how to use the ERP itself for something.  </p>
<p>So there&#39;s no one simple answer, and it usually starts with some detective clue-gathering, and unthreatening queries of people who know the realities of the actual work. The technical answers flow from that, when they&#39;re needed.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Getting Out What You Put In</title>
    <link>https://www.metaeight.com/posts/getting-out-what-you-put-in</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/getting-out-what-you-put-in</guid>
    <pubDate>Mon, 04 May 2026 10:55:58 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>Business systems like ERPs work as force multipliers for information, so you need to think about why people will trouble to put information in</description>
    <category>Data</category>
    <category>Process</category>
    <category>psychology</category>
    <content:encoded><![CDATA[<p>Nearly all business systems, ERP, CRM etc, work the same way.</p>
<h3 id="they-provide-information-that-makes-the-business-work-better-and-are-powered-by-information-that-goes-into-them">They provide information that makes the business work better. And are powered by information that goes into them.</h3>
<p>They are successful when the information out is clearly worth the trouble of getting the information in. And that needs to be so at all levels, from the business as a whole to each individual.</p>
<p>When implementing a system, or making changes, there’s an understandable tendency to focus on the bigger picture. The costs are usually high, the disruption very noticeable, and the return on investment is obviously tied to getting something back at the business level. What each individual involved gets out of it, personally, confuses the bigger issue.</p>
<p>Sometimes, I must say, even that obvious point isn’t considered. There are many and varied reasons for investing massive time, money and trouble in a new system, and the unacknowledged ones are often a bigger part than anyone wants to think about – marking territory, forcing change of apparently unrelated kinds, demonstrating authority. Where those are the dominant factors, success is measured by other things than what the new system can do, whatever the stated measures.</p>
<p>Considered for themselves, though, a successful business system is one that acts as a force multiplier for the information in the business, and is seen to do so.</p>
<p><strong>Being seen to provide an information benefit</strong> … that is also more subtle than it first appears. As politicians discover, everybody wants benefits, and much fewer want the cost. In business systems, as in society, there is almost always a disconnect between what we get out and the cost of it. One person’s benefit is another’s cost. Even when, as in our own tiny business, there are very few people, future me can seem like someone who can manage fine if I don’t do this annoying data entry now.</p>
<p>We know this, don’t we? What we don’t often do is openly consider it and plan accordingly.</p>
<h3 id="the-three-possible-strategies">The three possible strategies</h3>
<p>Consciously or otherwise, there are three basic strategies: discipline, incentive and automation, and they can be mixed.</p>
<p>Discipline and control are the obvious answers. It’s natural for business leaders to assume that if something is essential, like data entry, they can just say that it must be done and it will be. Practically, this is not ideal, even where it does actually happen as planned.</p>
<p>Incentives are better, just as long as they’re not naive incentives. Offering, for example, bonuses for completed data entry is not a true incentive, but closer to a benign sort of discipline. Real incentives make the clear link between the necessary work and the desired outcome, and help the work to seem worthwhile. In some cases it can be enough to put workers on different stages of a process close together, so that the problems arising from poor information are very visible to those at the stage when they can do something about it.</p>
<p>And automation? Well, that simply reduces the problem directly. People don’t like stopping what they’re doing to enter data about it, and will get round doing it if they can. If that data entry can be automatic, even partially, it will happen anyway with no friction, and everyone benefits. Connect a scale to the computer and nobody needs to enter a weight. Input documents with OCR. Scan RFID tags as items pass rather than have humans note them. Trigger changes on actions. Make users&#39; working lives easier, and automation is welcomed.</p>
<p>So, for successful processes: make the data entry as automatic as possible, make it easy where you can’t make it automatic, link effort to results … and fall back on control only as a last resort.</p>
<p>This is not rocket science, and provides a useful lens to consider every process in a business, not only ones within formal systems, however small or large.</p>
<p>The well-documented lack of success in big systems projects is, I suggest, largely down to the fact that at the top levels of a business don’t think this way when organising them.</p>
<p>Actual practical steps towards doing this are the next thing …</p>
]]></content:encoded>
  </item>
  <item>
    <title>The Pitfalls of Process</title>
    <link>https://www.metaeight.com/posts/the-pitfalls-of-process</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/the-pitfalls-of-process</guid>
    <pubDate>Sun, 12 Apr 2026 16:40:38 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>Processes are what make ERP run at all, and key to success. But there are limits.</description>
    <category>Process</category>
    <category>automation</category>
    <content:encoded><![CDATA[<p>An ERP without processes can&#39;t work. And that includes Epicor Kinetic.  </p>
<p>When implementing Kinetic, or any ERP, far more of the success or failure is down to how well you adapt and define your business processes than any other factor.  </p>
<p>Why?  </p>
<p>An ERP is many things in a business, but all of them rely on predictability and auditable data. That means defined business logic, defined flows, and knowing that it will be the same every time as well as that it can be inspected to mine what happened. For it to be able to do that, the real-world things that it models, records and controls, need to be defined, too.  </p>
<p>They also need to be mapped cleanly and reliably to the built-in logic of the ERP itself. This is why implementation specialists tend to strongly recommend changing the company&#39;s processes to become more similar to the standard pattern of the ERP, as they can then guarantee a match and reliable functioning.  </p>
<h3 id="so-processes-are-good-then">So, processes are good, then?</h3>
<p>Processes are good, definitely. More than that, they&#39;re essential, which isn&#39;t quite the same thing.  </p>
<p>But to anyone involved in ERP, this isn&#39;t news. What is less often mentioned is the limitations of process, and they&#39;re important. Slightly more abstract, and under-appreciated, but important.  </p>
<p>Here&#39;s some things to consider.</p>
<h3 id="the-human-factor">The human factor</h3>
<p>Computers and humans are good at different things. Computers are reliable. They will do exactly what they&#39;ve been set up to do. If they&#39;re not doing the right thing, that&#39;s because you&#39;ve set them up wrong. Humans are variable, flexible and intelligent. If they can see that pushing a button is going to cause a disaster, they won&#39;t do it. But they can also have off days when they make mistakes.  </p>
<p>Managers and people running organisations like machines for that reason. And when you have powerful machinery and capable software, it&#39;s tempting to elevate it above the fallible humans. Get the software to control what the people do, and aim at making the humans as predictable as the machines.  </p>
<p>The first disadvantage of this is that it&#39;s unnatural for those humans, strips them of a sense of meaning in what they do, and leads to dissatisfaction as a result.  </p>
<p>If that&#39;s not a worry, you lose the edge that the combination of machine predictability and human judgement can bring. Too tightly defined, and the human becomes constrained by the limits of what the machine can do, while not being able to match its reliability. In attempting to eliminate mistakes, you actually remove local discretion and flexible decision-making.  </p>
<p>Whatever you do, workarounds will develop. Either edge cases will be forced into standard patterns that don&#39;t suit them, or things will start to happen in ways that aren&#39;t approved, outside the systems you think you have. And all the time, it&#39;s pointless to have skilled and capable staff because they don&#39;t have any way to utilise the value they could bring.  </p>
<h3 id="in-a-chaotic-world-predictability-can-be-risky">In a chaotic world, predictability can be risky</h3>
<p>Processes are designed around, and suit, the foreseeable. Every possibility needs to be allowed for.  </p>
<p>In practical reality, it&#39;s not even possible to imagine every possibility. And if it was possible, in the case of ERP it would lead to such complexity that it would be a functional and maintenance nightmare. So in the real world, we build around a relatively fixed array of known eventualities, and we organise the framework we work within so as to limit what can happen. We assume a certain stability.  </p>
<p>There are times, for all sorts of reasons, when everything becomes far less stable than we&#39;d like. Sometimes we can ride that out, and sometimes chaos rolls in whatever we do. External factors beyond our control.  </p>
<p>At those times, the more a system has been optimised for the expected stability, the more brittle it will be in the changes. The highly structured, efficient, foolproof processes, that are 100% reliable in the expected circumstances, begin failing and can&#39;t adapt. Competitors with looser systems that couldn&#39;t compete, may suddenly win everywhere because they are unconstrained by comparison.  </p>
<h3 id="so-what-s-the-answer">So what's the answer?</h3>
<p>Agility is the answer. Along with human judgement.  </p>
<p>When designing your system, trust your users more than some ideal architecture, and where there&#39;s a choice leave them flexibility and don&#39;t box them in.  </p>
<p>If something <strong>really</strong> cannot vary or fail, then that is a prime target for automation, and it should be removed from human contact altogether if possible. Let the humans have scope to do the things that humans can bring value to, and don&#39;t tie them down doing things where mistakes can&#39;t be tolerated.  </p>
<p>Standardise where standardisation brings most value, and consider how far it needs to go.  </p>
<p>However confident you may be that something will never change, think twice, three times, as many times as needed, before fixing it in stone. Consider what might happen if it did change, even if you think it can&#39;t, and have a fallback plan.  </p>
<p>Watch for when process, or workflow, or your ERP, becomes a constraint, and face it early. When it becomes a reason why change is too hard or too expensive, it becomes a risk.  </p>
<p>This is all difficult, because we always want to make success a pattern. We do what works, and we learn what works, and we try to repeat what works. And if it keeps working then we insist on it. Because success follows. And if we&#39;ve had a hand in identifying what made that success happen then we&#39;re invested in it, too. And that stops us noticing when the world has changed and it&#39;s become a liability, often until it&#39;s too late.  </p>
<p>Any time there&#39;s doubt, there will usually be humans who have a clear view, humans who can see the change.  </p>
<h3 id="why-draw-attention-to-this">Why draw attention to this?</h3>
<p>As someone who makes a living from Epicor Kinetic ERP, I rely on organisations tailoring their systems, so in some ways I&#39;m writing against my own interests here. Optimising is what I do.  </p>
<p>But I do often have to push back, because over-optimisation is in nobody&#39;s interests long-term. I have seen often enough, by now, how confident assertion that something will never change ... turns into technical debt, rigidity in the face of market change, and makes other necessary future change into massively expensive risk.  </p>
<p>Good ERP set-up should make it easier to change as the world changes, not lock you in place, and I hope I always advise accordingly.  </p>
]]></content:encoded>
  </item>
  <item>
    <title>What Makes an ERP Expert?</title>
    <link>https://www.metaeight.com/posts/what-makes-an-erp-expert</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/what-makes-an-erp-expert</guid>
    <pubDate>Mon, 16 Feb 2026 10:46:57 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>There are different routes to expertise in ERP work, and this is one of them.</description>
    <category>Background</category>
    <category>ERP</category>
    <category>Expertise</category>
    <category>History</category>
    <content:encoded><![CDATA[<p>People in the ERP business, I’ve noticed, tend to come in two types.</p>
<p>The obvious type is the one who got a job with an ERP company after graduation or because it made sense as a job shift, and the ERP company trained them in all the things they need to know.</p>
<p>The other is the one who was doing something else in business, encountered ERP because it was needed for what they did, and somehow the ERP side took over.</p>
<p>This is the story of one of the second variety, me, and I tell it because it’s slowly occurred to me that it affects a lot of things about my work, and wider.</p>
<p>When I started work, I was part of a community that, for reasons that don’t matter here, banned computers. They also didn’t believe in education, so I started young, without going to university.</p>
<h4 id="project-management">Project Management</h4>
<p>It was a mechanical services company – plumbing and electrical – and my job was to manage long-running projects like the replacement of a heating system in a London church. So my first skill to learn was project management, loosely.</p>
<h4 id="systems-investigation">Systems Investigation</h4>
<p>The owner of the company was a genius with heating systems, but paperwork was alien to him, and as a boss he was brilliant because he was quite happy to trust people to do what they showed themselves capable of and he didn’t do himself. At intervals, whatever I was doing, I’d get a call, sometimes late at night if there was a crisis for a client, he’d pick me up, throw me an instruction manual for some equipment and tell me to figure it out while he drove us there, and then I’d tell him what he needed to know to fix it. So the second skill was getting to grips with alien systems at short notice.</p>
<h4 id="bookkeeping-and-finance">Bookkeeping and Finance</h4>
<p>Then the woman who did the bookkeeping and payroll left the company quite suddenly, and I was asked to take that over. It was a paper-based system entirely, which would have already been quite rare by then. The elderly man who did the overall company accounts taught me how it was done, and the tricks for finding where the problem might be when things didn’t add up, and the boss taught me how to juggle the cashflow and what to say to people when the customers were slow paying and the suppliers not inclined to care. I also discovered that I hated accounts as a job, but it’s been another valuable skill. And the first lesson that what <strong>needs</strong> doing is a better job than what I want to do.</p>
<h4 id="payroll-and-custom-tools">Payroll and Custom Tools</h4>
<p>Payroll was tedious and repetitive, with a whole lot of engineers paid by the hour once a week. Although there was no computer, I had a graphic calculator left from double A-level maths, and it had a sort of Basic programming language. So I programmed it to do the payroll and save me time. I’d got to grips with the calculator’s capabilities because while studying it was annoying that it could do Cartesian graphs but not Polar ones, so I programmed it to fill that gap. That might have been the first skill that seems relevant to ERP, but I’m not sure things are as tidy as that.  </p>
<h4 id="start-up-and-design">Start-up and Design</h4>
<p>Then came a couple of years trying to start a business from scratch. Plenty of lessons there about the realities of managing … well, everything. Supply chain, cashflow, accounting, sales. It was OK, but showed no signs of taking off without more investment, so we sold that and moved on. What I really enjoyed in that time was the design of everything, but unfortunately when there’s a whole business to get off the ground that’s mostly a distraction from what matters more. Still, it <strong>does</strong> matter, particularly discovering how people react to how things look and work.  </p>
<h4 id="quality-and-outsourced-operations">Quality and Outsourced Operations</h4>
<p>I joined a company after that, specifically to help with research and development and quality control. This was a small but growing company who had already gone from distribution to outsourced manufacture and had bigger ambitions. That was an excellent education in scientific process and how it has to fit in to commercial demands, and system design with auditability. As time went on, I became responsible not only for the design and performance of the products, but also handled the international supply chain, negotiating with East Asian specialist manufacturers and local sub-contract ones. That also took me into the world of international product regulation and standardised testing.  </p>
<h4 id="excel-etc">Excel etc</h4>
<p>In all this time, I worked without computers.  </p>
<p>Then that prohibition started to relax, and rigidly controlled computers <strong>were</strong> introduced. With a very short list of installed software and very high barriers to getting any more.  </p>
<p>So part of my job became making Word and particularly Excel, later Access, do more than they were ever intended to do. Particularly Excel, once I learned VBA.  </p>
<p>One of the first things was an entire purchasing system.  </p>
<p>Later I created a rainwater flow-rate calculation system that needed all sorts of inventions. I hooked up Adobe Illustrator to Excel to digitise a British Standard for typical rainfalls, and invented a coordinate calculation method to cross-reference the digitised contour coordinates with postcode locations to create a master table of rainfall per postcode. I also ended up turning Excel into a sort of CAD software, in which users could import architectural drawings, trace the relevant parts, calculate the flows, and output reports with marked-up drawings. From Excel. Interesting times. Not the ideal use for Excel, and I knew it, but the edge it gave the company meant it stayed in use for a long time.  </p>
<p>By this time the quality control system was running on Access, but outgrew it so the Access part became the front end to a SQL Server database, as slowly the rigidity around the computers loosened a bit.</p>
<h4 id="and-finally-erp">... and finally, ERP</h4>
<p>So by the time actual ERP came along, it didn&#39;t feel like a revolution. More, &quot;so this is what doing things properly is like&quot;.  </p>
<p>We used a simple ERP for a few years. Then, as it became clear that the rapidly growing company needed something more serious – we were manufacturing in-house and looking at doing more of it, as well as having double-digit sales growth most years. So I was part of a team set up to examine full ERP solutions and choose one. Many demos later, after much discussion and business modelling, Epicor ERP10 was installed.  </p>
<h4 id="growing-pains">Growing pains</h4>
<p>The first shock at that point was that it was completely useless. The CEO hit the roof on discovering that the company had opted for installation without implementation, having been assured it would be completely functional as was, and of course an ERP that hasn&#39;t been set up is pointless. Hopefully that kind of selling doesn&#39;t happen any more.  </p>
<p>So, with the cost already sunk, there was an unplanned project expense of as much again, fortunately with excellent consultants this time. Again, I was a core member of the team dedicated to the actual implementation. Certain specific areas of the business were my responsibility, and where data preparation became complex it also fell to me. At some points, Excel slowed to a crawl over the complexity and data load, and I learned on the hoof when it was better to get the data into a database and create procedures to systematically turn it from one form to another on demand, according to rules.  </p>
<p>We also had training on customisation, which quickly became obvious was the key to making things work as we needed. Rather than go through the process of carefully documenting change requests, I found I was tasked with doing more and more of it myself, partly because I already knew the business and it took less effort for stressed team members to tell me what they needed.  </p>
<p>And go-live happened on time, successfully. I take little credit for that, in case that isn&#39;t clear. Our lead consultant was brilliant, and I was very raw and just one of the team.  </p>
<h4 id="actual-erp-responsibility">Actual ERP responsibility</h4>
<p>As go-live approached, though, that consultant had words with management.  </p>
<p>&quot;You do realise,&quot; he said, &quot;that once you switch this ERP on, you don&#39;t just leave it and get back to work? Someone within the company needs to be responsible for it, if not full-time then close to full-time.&quot;  </p>
<p>And between everybody, they decided that person was me. Honestly, although it was a job role I had never known existed, let alone aimed at, it felt as though my zig-zagging previous career suddenly made sense as preparation for it. ERP is an intersection between business processes and software management and development. A lot of work is done by specialists in individual areas, but ERP &quot;feel&quot;, I am convinced, comes only from being steeped in real business situations and creating systems for them, which was the common thread of almost everything I&#39;d done.  </p>
<h4 id="the-in-house-years">The in-house years</h4>
<p>So for some while, making Epicor ERP solve real-life problems in a growing distributor/manufacturer was my job.  </p>
<p>We did some good things. Implemented the Epicor version of CRM and leveraged it, for which Epicor gave us a global customer achievement award. Early on I created an integration with the main shipping company we used, and then did the same again for a secondary shipper inside a week for a tight deadline, at which a visting representative wanted to know how we could do that when he couldn&#39;t get anyone else to. A lot of little things, too, to chip away at time wasted and resources misused.  </p>
<p>We were a guinea-pig for a new add-on product, and I recall being part of a high-powered group gathered from Epicor, the new vendor and others, to decide how to make it fit in and do what it needed to do. As a result, I found out how to modify the accounting rules, which are ridiculously powerful and under-appreciated.  </p>
<p>I learned a lot. Including that I liked the process of doing that better than I like a career or, for that matter being part of a big company. I like the development, the problem-solving, finding solutions that work in the real world and are durable.  </p>
<h4 id="and-finally-it-all-makes-sense">And finally it all makes sense</h4>
<p>Which brings me to where I am, doing exactly that. At the time of writing I still do a lot of it for that company, too, but now more widely wherever I&#39;m needed. Because it turns out that some problems are best solved by a particular set of skills and experience that is hard to learn deliberately and tends to be acquired almost accidentally.  </p>
]]></content:encoded>
  </item>
  <item>
    <title>What Is It About Cloud?</title>
    <link>https://www.metaeight.com/posts/what-is-it-about-cloud</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/what-is-it-about-cloud</guid>
    <pubDate>Mon, 12 Jan 2026 14:56:51 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>Cloud, or SaaS versions of software are presented as inevitable and that&apos;s misleading</description>
    <category>Kinetic</category>
    <category>architecture</category>
    <category>cloud</category>
    <category>SaaS</category>
    <content:encoded><![CDATA[<p>With the announcement that Epicor is moving to cloud only in the shockingly near future, it feels like time to detail what &quot;cloud&quot; actually means, practically.  </p>
<p>Software-as-a-Service, SaaS, or &quot;cloud&quot;, has revolutionised a lot of things, because it has real advantages.</p>
<p>Crucially, though, a lot of those advantages are advantages for the maker of the software. And they are <strong>so</strong> compelling for them that it can overwhelm all other considerations. It becomes difficult for the software company to see how it looks from the buyer and user&#39;s perspectives. Even when they <em>do</em> see it, there&#39;s a strong incentive to present cloud as universally beneficial.  </p>
<p>I am not anti-cloud. Looking back over my recent projects, three out of five are on cloud versions of Epicor Kinetic, and they&#39;re successes.</p>
<p>What frustrates me is the way the trade-offs of cloud are downplayed or avoided entirely.</p>
<h3 id="why-you-might-choose-saas-cloud-software">Why you might choose SaaS, cloud software</h3>
<p>At the &quot;choice&quot; stage, cloud is fast and low-cost. You can sign up, switch on, and it all works.  </p>
<p>You don&#39;t have to buy equipment, you don&#39;t need the deep IT knowledge to ensure components work together, the Finance department doesn&#39;t need to sign off on capital expenditure for the equipment and licensing. You agree to an ongoing cost, which usually fits business cashflow and accounting nicely and is seen as less of a risk.  </p>
<p>Then, in business as usual, you have outsourced the &quot;difficult part&quot; of running complex software, which saves on in-house skills. No database management and maintenance. No OS patching. No need to plan for capacity and performance and monitor servers.</p>
<p>For <em>non-critical</em> or <em>replaceable</em> systems, this is almost all upside. Particularly if the software is plug-and-play, to be used exactly as provided. You can be paying for the value you get every month and see the value, and any time the value isn&#39;t there you can stop paying.  </p>
<p>Then, the vendor will tell you, there&#39;s immediate access to new features and improvements and a guarantee that you&#39;re not falling behind or missing out. Which always sounds good.  </p>
<h3 id="the-myth-of-inevitability">The myth of inevitability</h3>
<p>Wrap that all together, and cloud will probably be presented to you as unavoidable. It&#39;s such an obvious choice that you&#39;d be foolish to do anything else, even if anything else remains possible. It&#39;s what all the cool kids do, what the big hitters in your domain are doing, a sign that you&#39;re taking advantage of everything the future offers.  </p>
<p>And <strong>MUCH</strong> easier to sign off, to boot.  </p>
<p>But technologies aren&#39;t inevitable. Business models can come close to it, by making others unviable. When a choice is presented as the only one, it&#39;s usually because examining the alternatives is awkward for the seller.  </p>
<h3 id="what-s-in-it-for-them">What's in it for them?</h3>
<p>&quot;So, Mr Software Vendor, what first attracted you to the model that allows you complete control and ensures your customers pay you regularly?&quot;  </p>
<p>You don&#39;t need to be cynical to see the attractions of the cloud model for vendors. For a start, ARR (annual recurring revenue) is what ends up driving a lot of things, and without subscriptions the only way of achieving that is to constantly come up with new customers or additional things existing customers will pay more for. It&#39;s a lot easier and finance-market-friendly to forgo the lump payments in exchange for a commitment to keep paying.  </p>
<p>And it streamlines the vendor&#39;s operations, too. There&#39;s no need to manage an endless proliferation of platforms and versions and maintain back-compatibility, support staff who know all of it, and deal with endless varieties of problems. Centralise it, and it all becomes simpler. And when something needs to change you can change it and know it&#39;s changed everywhere.  </p>
<p>Look at this from the most convenient angle, and it&#39;s not difficult to convince yourself that these are all advantages for the end user as well. The financial health and capacity to manage must feed through, mustn&#39;t it? Isn&#39;t everybody better off?  </p>
<h3 id="the-catches">The catches</h3>
<p>Nothing is ever all &quot;win&quot;. Everything is a trade-off, and it&#39;s up to us to judge whether it&#39;s a trade-off worth making.  </p>
<p>So, most obviously, not having to pay out huge sums for perpetual licenses is balanced by the commitment to keep paying indefinitely. In most cases, that will end up being more, just spread out. That&#39;s not a bad thing if the value is there, but it is a trade-off.  </p>
<p>We&#39;ll skip over the fact that once you&#39;re committed, the price can be raised and you may feel you have no option but to go along with it.  </p>
<p>More subtly, the promise of always being up-to-date can be a treadmill with no off-switch. New features you didn&#39;t ask for, changes you don&#39;t need, the removal of features you depend on. Even features that are useful may arrive at less convenient times, requiring you to adjust on someone else&#39;s schedule.  </p>
<p>Because that is the central trade-off with outsourcing the software provision. You give up control along with the worry and hassle. Which may be a big win, but isn&#39;t always.  </p>
<p>Most obviously, there are some companies where control is vital. Sometimes there are requirements around data, sometimes around processing, or vital services that cannot be allowed to go down under any circumstances. SLAs are fine for most, and the likelihood is that problems will happen less often with core provision under the care of central experts, but the trade-off is that when there <strong>is</strong> a problem, there&#39;s nothing you can do about it. And for some that will never be acceptable.  </p>
<p>Even for the average organisation, it turns out to be difficult to foresee the extent to which internal staff will be required to do the bidding of the vendor. It will become a department&#39;s job to do what the vendor says, under threat of all essential services failing, at regular intervals. Not for all software, but to the extent that the organisation and the software have moulded around each other, that job will increase. An IT department may be all ready to deploy something game-changing and have to hold off because an upgrade is hitting, even though it has nothing in it that&#39;s needed.  </p>
<p>Which is another subtle pressure on the organisation to do less with the software than it&#39;s capable of, and was promised when signing up. The upgrade cycle will make unique features that give your organisation an edge feel more of an overhead, because they&#39;ll need testing and validating so often. That can be a good thing, forcing them to be justified, but it&#39;s another loss of control.  </p>
<h3 id="and-erp-in-particular">And ERP in particular ...</h3>
<p>ERP software, in my opinion, is one of the classes where these trade-offs need more examination, in fact more examination than they usually get.  </p>
<p>Because the big benefits of the cloud approach depend on consistency and standardisation, while ERP is explicitly sold on the basis of being able to mould to particular needs. And trust is more crucial than in almost any other class of software, because problems usually lead to organisations being unable to function meaningfully at all.  </p>
<p>That puts ERP firmly outside the class of &quot;just pay and use it&quot; software that cloud is so good for. Unless you know you can work that way.   </p>
<p>Right now it also feels maybe too pointed to say that trust also extends to being able to plan for the future knowing what a commitment to a software platform is going to involve.  </p>
<h3 id="where-does-this-leave-users-of-epicor-software">Where does this leave users of Epicor software?</h3>
<p>There are many happy users of cloud Kinetic that I know of. It&#39;s a good product, and with eyes open to all these things can be a winner.  </p>
<p>Anyone looking for an ERP can consider, say, Epicor Kinetic as a cloud product and may well evaluate the trade-offs here and find it makes sense for them. And go into using it with open eyes, maximising the undoubted benefits and with plans for managing the price paid for them. (Usually the underestimated one, in my experience, is dedicated in-house knowledge and time, which isn&#39;t much diminished in cloud Kinetic use).  </p>
<p>If anyone knows that the trade-offs are too negative, then better know as early as possible so other plans can be made.  </p>
<p>The main reason I&#39;m negative about cloud, as I say, is simply that the incentive is too great to pretend the trade-offs don&#39;t exist, that&#39;s all. And I&#39;m always disappointed when they have been avoided rather than presented and faced, so this is my contribution.  </p>
<p>Meanwhile, anyone using Epicor and now having to make plans for some kind of transition ... here we are. I shouldn&#39;t need to say here that Meta eight Ltd can help, should I?    </p>
]]></content:encoded>
  </item>
  <item>
    <title>Kinetic Menu Layer Management</title>
    <link>https://www.metaeight.com/posts/kinetic-menu-layer-management</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/kinetic-menu-layer-management</guid>
    <pubDate>Fri, 07 Nov 2025 09:54:04 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description></description>
    <category>Kinetic</category>
    <category>Utility</category>
    <category>UI</category>
    <category>System</category>
    <category>Menu</category>
    <content:encoded><![CDATA[<p>Customisation of Epicor Kinetic screens is routine.  </p>
<p>Customisations can be drastic. More normally, though, they&#39;re relatively trivial, something like moving a field, hiding something you don&#39;t want to be a distraction, or adding an extra component. It&#39;s normal.  </p>
<p>Either way, what most users then notice is that the result seems inconsistent. Sometimes they get the modified version, sometimes they don&#39;t. And that&#39;s usually because the most popular screens can be opened from a lot of different places within the menu structure, and each needs setting up individually to open the specific version of the screen. It&#39;s not even always obvious to the user where they&#39;ve opened something from.  </p>
<p>Most developers know this, of course. But even for experienced developers making things consistent can be tedious, with the risk of missing something.  </p>
<p>So at META eight we created a standard dashboard to manage it. Nothing flashy, just practical.</p>
<p>And we&#39;ve made it free to anyone who feels it might be useful to them, too. Everything you need, including instructions, is here:</p>
<p><a href="https://github.com/META-eight/KineticMenuLayerManageDB">META eight Kinetic Menu Management Dashboard</a>  </p>
]]></content:encoded>
  </item>
  <item>
    <title>Careful With That AI in Your ERP</title>
    <link>https://www.metaeight.com/posts/careful-with-that-ai-in-your-erp</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/careful-with-that-ai-in-your-erp</guid>
    <pubDate>Wed, 06 Aug 2025 13:05:06 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>Somebody, somehow, is probably making you feel as though you should be using AI in your ERP. They might not be wrong, but here&apos;s how to think about that.</description>
    <category>Epicor</category>
    <category>ERP</category>
    <category>AI</category>
    <category>architecture</category>
    <category>AI</category>
    <content:encoded><![CDATA[<p>If you’re in any line of work that involves sitting at a desk, you’re obliged by now to be thinking about AI.</p>
<p>If you use software of any kind, you probably can’t help thinking about AI, because whoever supplies it is pushing AI on you. Everything is better with AI!</p>
<p>Does that include ERP?</p>
<p>Well, it would be odd if the hype didn’t get as far as ERP, but I get the impression that most ERP software companies are slightly conflicted, and there’s good reason for that. They don’t want to miss out on “new and shiny” (when have they ever?) and they don’t want to leave openings that others might capitalise on. But the fit isn’t quite a natural one.</p>
<p>So where does that leave you, if you’re responsible for ERP in a real company?</p>
<p>Should you be pushing for more AI, resisting it, ignoring it and hoping it’ll go away, or what?</p>
<h3 id="how-to-think-about-ai-in-erp-terms">How to think about AI in ERP terms</h3>
<p>What do you have an ERP for, and why?</p>
<p>There are different perspectives on this, and a lot of different answers, but they usually boil down to “to keep track of everything that happens, and make the right things happen”.</p>
<p>What that means, is: <em>an ERP must be rigidly predictable, or it isn’t an ERP</em>.</p>
<p>In technical terms, ERPs are deterministic. Given certain inputs, the results must always be the same, and when requesting data, the results must always be the same. This is why they are often (wrongly) assumed to be Finance tools in essence, because they must be auditable, and all records consistent when they are.</p>
<p>As soon as you start working with modern AI, you realise … that’s exactly what it isn’t. That’s its magic, in fact, that it feels human in its whims and use of apparent judgement, even as it has inhuman speed and capability.</p>
<p>So introducing AI into the workings of an ERP, or thinking that AI in some form will replace ERP, is a category error. For all AI’s promise and brilliance, it takes away precisely what the ERP should be.</p>
<h3 id="so-ai-is-no-use">So AI is no use?</h3>
<p>At this point, this sounds like an excuse from someone with interests in what ERP has always been, trying to hold back the tide. Everybody would like to think that their expertise is going to remain unaffected.</p>
<p>But this is more about <strong>where</strong> AI is going to successfully invade, not about whether it’ll happen.</p>
<p>And I think the best way to think about this is to consider AI not as part of the ERP, but as a sort of superhuman user of it.</p>
<h3 id="an-alien-as-a-business-butler">An alien as a business butler</h3>
<p>The dream that&#39;s being sold is something like this, mostly:</p>
<p>You don&#39;t have an ERP as you knew it any more. No screens, no dashboards, no hopping from place to place to see what&#39;s going on, no data entry, no scanning or clocking in and out. Like a science fiction spaceship, you ask your computer what&#39;s going on in the business, and it knows. It can explain to you, and give you whatever facts you need. It can make changes you request, and will suggest what&#39;s needed. It knows what everybody is doing without being a drag on them, and knows so much it&#39;s able to predict more before anybody could have known.</p>
<p>Which sounds great, and little by little we may get closer to that than feels likely from where we are now. I&#39;m quite optimistic on that front.</p>
<p><strong>BUT</strong> it won&#39;t happen by replacing the boring basics of ERPs as they are now. They have to stay in place (I say confidently, but with the caveat that tech may develop, possibly, that makes all my opinions a moot point – still this is as things are). They have to stay in place, because what this vision is <em>really</em> about is putting something better than people between the ERP machinery and the users. Not even the alien superintelligence of the AI we&#39;re assured is coming can conjure up knowledge from bad or inconsistent data, so the methodical structures that gather, store and connect that data are still needed.</p>
<p>Just as a mansion still needs a kitchen and ingredients, even though the residents have meals brought to them discreetly on demand.</p>
<h3 id="right-but-what-about-now">Right ... but what about now?</h3>
<p>What this means is that you, as someone responsible for an ERP, can&#39;t relax and let the machines take over. Your task, just as it ever was, is to maintain a system that&#39;s as absolutely reliable as it can be, and AI isn&#39;t going to help with that any time soon.</p>
<p>The important thing is the divide between deterministic behaviour, and judgement. Anywhere in the system where you need fixed results, AI doesn&#39;t belong, and you should be suspicious if it&#39;s offered. What AI <em>can</em> do is add layers on top of that, and threading between that fixed behaviour, that probably you previously needed humans for.</p>
<p>&quot;What does this mean?&quot;<br>&quot;How should we respond?&quot;<br>&quot;Is there a pattern here?&quot;<br>&quot;Does this belong to this or that category?&quot;  </p>
<p>These are the kinds of things current AI is already good at, and can probably help with if embedded in an ERP.</p>
<p>Anything or anybody that suggests AI can make any existing part of your system obsolete should be viewed with suspicion. Ask a lot of questions, at the very least. Anything we currently know an AI can do ... it needs what your system already does for that, just as much as you do.</p>
<p>&quot;We&#39;re not sure how this should work, so we&#39;re letting AI handle it&quot; is a very bad sign, I probably don&#39;t need to say.</p>
<p>So the key is to be as rigorous as ever in the core ERP, and only allow AI features to access that core ERP in the way a user would. The ERP remains an ERP. And in an ideal world, the AI becomes that person the CEO asks for information rather than ever logging in themselves.</p>
<h3 id="and-this-is-coming">And this is coming</h3>
<p>We are starting to use AI tools in ERP work.  </p>
<p>As an enhancement to OCR for document input here.<br>To choose between categorisations there.<br>To create summaries for notifications in this case.<br>As a check for patterns in data in that.  </p>
<p>Little things, mostly, conveniences and removals of drudge work, with certain key elements, such as</p>
<ul>
<li>Lack of clear definition what should be done in each case (otherwise an algorithm works better)  </li>
<li>Structured options provided for action, only free-for-all if any resulting action will be by human decision  </li>
<li>Clear oversight by humans, and fallback and override by responsible humans</li>
</ul>
<p>If we can do this already, a lot more will become possible, without any doubt. So I don&#39;t think there&#39;s any avoiding it.</p>
<p>And notice I&#39;ve barely touched on what&#39;s needed to actually implement these things, and how to make them work reliably.</p>
<h3 id="tl-dr">TL:DR</h3>
<p>AI is likely to be useful in your business systems, if not now then soon.  </p>
<p>AI is not going to replace your ERP in any respect, and if anyone is suggesting any such thing, keep your distance. Any useful application of AI needs what your ERP does.</p>
<p>Think of AI as a superhuman user of your ERP, not as part of it, able to do the repetitive tasks that are too ill-defined for normal computer processes, and too overwhelming or too dull for humans to be reliable for, and you&#39;ll be best able to judge whether a proposed solution is snake oil or genuinely useful.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Moving on from the Classic client to Kinetic</title>
    <link>https://www.metaeight.com/posts/moving-on-from-classic-to-kinetic</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/moving-on-from-classic-to-kinetic</guid>
    <pubDate>Fri, 22 Nov 2024 16:30:00 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>Epicor&apos;s classic client soon won&apos;t exist. Like it or not, you need to get to grips with Kinetic and the browser.</description>
    <category>Epicor</category>
    <category>Kinetic</category>
    <category>UI</category>
    <category>Client</category>
    <category>Application Studio</category>
    <content:encoded><![CDATA[<p>In 2026, the Epicor Classic Client will no longer be.</p>
<p>It will be an ex-UI.</p>
<p>If you&#39;re running Kinetic on-premise, you obviously don&#39;t need to panic, because you can choose when you upgrade to the point of classic not being supported. If you&#39;re wise, though, you&#39;ll be making plans even if you haven&#39;t started already.</p>
<p>If you&#39;re a SaaS user, you have a hard deadline. Any classic screens you&#39;re still using are going to become unavailable, like it or not.</p>
<p>If you&#39;re OK with that, skip straight to the <a href="#plan-of-action">how-to</a>. (Yes, that&#39;s a link.)</p>
<p>For the rest of us ...</p>
<h3 id="a-moment-of-silence">A moment of silence</h3>
<p>I like the classic client. It&#39;s still my preference, try as I might to get used to the new Kinetic client. It&#39;s robust, proven, adaptable.</p>
<p>You can fit a lot more into a small space, and it&#39;s clearer, generally, which screen you&#39;re in. There are more developers, because it uses the same basic code and tools as the server side of Kinetic, and they&#39;re Microsoft standard for the most part.</p>
<p>So I&#39;m sorry to see it go. But here we are.</p>
<p>I come to bury the classic client, not to praise it. Some say it wasn&#39;t ambitious, and that was a grievous fault.</p>
<p>The Kinetic UI is ambitious, and because it&#39;s a massive step it&#39;s been hardest to accept for those most familiar with the old client. It didn&#39;t help that the ambition ran ahead of the reality for so long, meaning that users and admins got into the habit of retreating back to the familiar.</p>
<h3 id="if-you-re-resisting-change-this-is-for-you">If you're resisting change, this is for you.</h3>
<p>It&#39;s time to let go. The Kinetic client is good now, though I for one am not blind to some shortcomings, and you can do this.</p>
<p>You know it&#39;s a big change, not a trivial one, so that gives you an advantage. It&#39;s the users who think swapping out one set of screens for another is just an admin task are the ones who get bitten by the complexities they didn&#39;t expect.</p>
<p>The Kinetic UI is completely different.</p>
<p>It&#39;s different underneath, it&#39;s different in the tools you use to modify it, and it&#39;s completely different to use and look at.</p>
<p>Don&#39;t let that blind you to what it can do, because you&#39;re looking at what it isn&#39;t. Arguably you can do more with it than the classic client. It can be great, and very flexible. The price you pay is not that you&#39;re getting a lesser system, not in the least. It&#39;s simply the sheer amount of change.</p>
<p>Vanilla Kinetic screens all look much the same, and nothing like users are used to. They take up far more space, and usually need more clicking.</p>
<p><strong>DO NOT be tempted to try to get over that, and put them back how everybody will say they want.</strong> Yes, you could. Or make them even better. Don&#39;t. This is a whole new UI, and users need to get used to it.</p>
<p>Treat this as a chance for a re-set.</p>
<h3 id="a-plan-of-action-plan-of-action">A plan of action {#plan-of-action}</h3>
<ol>
<li>Get users to use the new screens in the Kinetic UI.</li>
</ol>
<p>If you&#39;re doing a big upgrade from an older version, treat it as an implementation project, not an upgrade. Push users into a Dev system with all-new UI, and do scenario testing.
If you&#39;re already on a recent version of Kinetic, you can switch screens progressively, starting with ones that&#39;ll matter less. If they&#39;re using them live, it&#39;ll be quicker finding out if anything needs adapting.</p>
<ol start="2">
<li>Make a list of the existing customised screens.</li>
</ol>
<p><strong>Do not</strong> start customising their replacements. Just make a list.</p>
<ol start="3">
<li>Divide the list into two types:</li>
</ol>
<p>Trivial additions of non-standard data.<br>Anything else.</p>
<ol start="4">
<li>Check with users that they still need the non-standard data for each of the first set, and add it to a Kinetic version.</li>
</ol>
<p>Treat those new customised screens the same as the completely standard ones. Either as part of the scenario testing or within the phased roll-out.</p>
<ol start="5">
<li>Deal with the second set, the more or less heavily customised screens.</li>
</ol>
<p>Be prepared for additions to this list, if users find other Kinetic screens change in ways they can&#39;t live with.</p>
<h3 id="actually-customising-those-screens">Actually customising those screens ...</h3>
<p>First of all, don&#39;t. At least not yet.</p>
<p>Whether you&#39;re doing a phased roll-out or a big upgrade, pull these out into a development system as a separate thing, and have a user seriously try the new base Kinetic screen with no customisation at all.</p>
<p>The new screens are so different that the thinking that led to the old customised screens probably won&#39;t apply any more, so the old solution will be a bad guide to the new one. Take time to work with users to see how the Kinetic version works. Push back a bit, identify what the real gaps are, not what they expect them to be. There may be more, or there may be less, but they probably won&#39;t be quite the same.</p>
<p>Then, finally, solve those problems.</p>
<p>But do it in a Kinetic-native way. If you try to duplicate what people have been used to in Classic, it&#39;ll be headaches all the way, far more time, and won&#39;t work as well. New thinking is required.</p>
<p>And, of course, Application Studio skills.</p>
<h3 id="ok-what-about-that-new-thinking-and-those-skills">OK, what about that new thinking and those skills?</h3>
<p>That&#39;s another subject, for another post. If you can&#39;t wait, feel free to get in touch.</p>
]]></content:encoded>
  </item>
  <item>
    <title>What Implementing an ERP is Really Like</title>
    <link>https://www.metaeight.com/posts/what-implementing-an-erp-is-really-like</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/what-implementing-an-erp-is-really-like</guid>
    <pubDate>Fri, 04 Oct 2024 19:03:10 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>What&apos;s the problem with implementing an ERP?</description>
    <category>Epicor</category>
    <category>Kinetic</category>
    <category>Implementation</category>
    <content:encoded><![CDATA[<p>I don’t get involved in ERP implementations much.
My thing is helping with systems already in use.</p>
<p>So please don&#39;t call me about running an implementation for you. It takes a skilled team, because there are more things to configure than one person can know. And a project manager, which I am not. There are consultancies that specialise in implementations, and for Kinetic there&#39;s Epicor themselves, of course. Our little business doesn&#39;t compete with them.</p>
<p>I have been in the thick of some implementations, though, enough to talk about it.</p>
<h3 id="so-here-s-the-thing-about-implementing-an-erp">So here’s the thing about implementing an ERP …</h3>
<p>Businesses do it because they’re growing or changing, usually, which means they’re busy.</p>
<p>They settle on an ERP, hopefully making a wise choice and not allowing “shiny” or ideas of prestige to sway them, and are OK with the cost. ERPs are expensive, but it&#39;s going to pay for itself in efficiency and accuracy.</p>
<p>Then they find out what implementation costs. And they’re shocked, but they sign that off too. After all, they are going to be in the hands of experts, and better to pay experts than try to do it themselves.</p>
<p>They’re busy. Busy with the business itself.</p>
<p>Then the experts come in and get started, and not a lot seems to happen, because they all say they need time with the busiest people.</p>
<p>What was going to be experts coming in, seeing what needs to be done, doing it, and training everybody on what to do ...?<br>It&#39;s not that. It&#39;s meetings. Requests for documents, procedures and data. There&#39;s a lot of waiting, because they&#39;re waiting for the people in the business to do things, and the people in the business are busy.</p>
<p>The experts are used to this. They&#39;ll tell the business what the business needs to do, and wait, because this is what always happens. Time passes, and bills tick upwards. It&#39;s not the experts&#39; fault, because they can&#39;t work magic.</p>
<h3 id="so-what-happens">So what happens?</h3>
<p>At some point frustration spills over, because these are the experts, and they should be doing what they need to do, advising and getting on with it. At least as far as management are concerned. The whole project turns into a drag on the business, costing money <strong>and</strong> acting as a distraction and a drag on making money.</p>
<p>So maybe more or different experts are needed, to break the logjam? At this point, the cost seems secondary because it’s running away anyway.</p>
<p>Sometimes a different expert CAN help (this is the stage at which I’ve joined a few times), but not because of the expertise, as such.</p>
<h3 id="what-s-the-actual-problem">What's the actual problem?</h3>
<p>The whole point of an ERP is to mirror the business itself. That means most ERPs, including Epicor Kinetic, are complex, flexible, and configurable, because no two businesses are the same. The system, as it&#39;s sold, won&#39;t even work without being set up to match the business, and that&#39;s before you start any gap analysis.</p>
<p>Any honest salesperson or consultant will tell you all this. They don&#39;t hide it or cheat (normally). But the business buying the system often doesn&#39;t take in the implication for the process of getting the ERP up and running.</p>
<p>Which is ... the experts, the consultants, know the ERP, but they don&#39;t know the business, and they can&#39;t. It would help if they could embed themselves in the business, but even then they can&#39;t know everything about all of it. And at consultants&#39; rates it&#39;s not likely to be signed off as an idea anyway.</p>
<p>There is no real way round this. What an implementation is, is:</p>
<ul>
<li>Finding out the processes and the data (which needs the staff).  </li>
<li>Matching those to the ERP (which consultants can do).  </li>
<li>Configuring and customising the ERP (which is what everybody expects consultants to do).  </li>
<li>Testing whether it does the right things (which needs the staff).  </li>
<li>Training and preparing (which needs both the staff and the consultants).</li>
</ul>
<p>Most of the time and resource is needed from the business itself. And the business is busy.</p>
<p>And nearly all the problems everybody hears about in ERP implementations are because this is a very hard fact to accept, and a lot of businesses get a long way down the road before they can accept it. I suspect the core reason is that nobody involved in selling and implementing ERPs feels they can afford to be as up-front as it would take to avoid the problem, for fear of businesses shying away from doing it at all.</p>
<h3 id="so-what-s-the-answer">So what's the answer?</h3>
<p>The answer is that there is no answer. This is just the ugly fact of ERP implementations. When a business accepts that they&#39;re disruptive, and realistically faces the trade-offs needed, that&#39;s when it can make the best of it.</p>
<p>A good ERP implementation needs maybe half the available time of the best people in the business, roughly speaking, the people it can least spare. Because it&#39;s their input that makes the ERP actually do the right things in the right way. The job of management, having decided that the ERP is going in, is to work out exactly <strong>how</strong> those people can spare that time, over the timeframe they can spare it, and keep the business functional for as long as it takes. Getting it over quickly means more time out, and skimping on the time out means it will take longer.</p>
<p>As I say, implementations are not what I do. There will be experts who say I&#39;m being cynical and negative in this, rather than realistic.</p>
<p>Maybe so. But think of it this way: if you go into a project assuming what I&#39;ve said here is gospel truth, you&#39;ll be prepared in a way that makes it more likely to succeed. If you don&#39;t, what happens if you come to a point where it does look like this? Can you afford to bet it won&#39;t?</p>
<h3 id="ok-but-is-there-anything-that-will-help">OK, but is there ANYTHING that will help?</h3>
<p>Yes, as long as you focus on dealing with this basic fact, rather than looking for something to make it go away.</p>
<p>The biggest thing, probably, is project management and accountability. Visible, in both cases.</p>
<p>I&#39;ve seen that work extremely well with sticky notes on a huge whiteboard, so it doesn&#39;t need to be elaborate. If people are scattered then you&#39;ll need a software solution, almost certainly. It&#39;ll feel like more admin, which is the last thing anyone wants, but it pays back when done properly.</p>
<p>If it is digital, then it can pay to have a huge display somewhere everybody passes, that shows what&#39;s going on and who is responsible for each bit that&#39;s going on. This works well for scenario testing, as a specific script passes between departments. Everybody can see if something is being held up because nobody has got to it. And everybody can see the list of things that need fixing, too.</p>
<p>And it&#39;s the fixes that I can help with, as I mentioned that I&#39;ve come into implementations at later stages a few times. Once the business itself is driving the cycle, as it has to do, then it can quickly come to seem worth having a nimbler developer in the loop, where the same person can discuss what the fix should look like <strong>and</strong> get it in place, in a timeframe in which a team of consultants might still be gathering requirements. That team of implementation consultants never runs out of things to do, so they rarely mind another pair of hands.</p>
<p>But the business itself, and the people in the business, can&#39;t escape doing a lot of the work.</p>
<p>Harsh but true.</p>
]]></content:encoded>
  </item>
  <item>
    <title>How to Do Modern Epicor Development</title>
    <link>https://www.metaeight.com/posts/how-to-do-modern-epicor-development</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/how-to-do-modern-epicor-development</guid>
    <pubDate>Thu, 26 Sep 2024 14:54:43 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>Epicor Kinetic is different to the previous ERP10, and we need to change how we think about Epicor development.</description>
    <category>Epicor</category>
    <category>Customisation</category>
    <category>Kinetic</category>
    <category>ERP10</category>
    <category>Development</category>
    <content:encoded><![CDATA[<h3 id="one-of-the-best-things-about-epicor-software">One of the best things about Epicor software</h3>
<p>– was always that it was so heavily Windows-based.</p>
<p>I recall an Epicor sales person telling me that “Epicor is more Microsoft than Microsoft”.</p>
<p>For all the drawbacks of that all-in-on-a-platform approach, it made customising the system straightforward. It was built on Microsoft tech, with Microsoft tools, and all the standard Microsoft and .NET development ability was right there within the system management. If Windows could be made to do something, you could get your Epicor system to do it.</p>
<h3 id="it-isn-t-like-that-any-more-really">… it isn’t like that any more, really.</h3>
<p>It’s taken a while, but I’ve realised that, as an Epicor developer who makes a living making Epicor Kinetic do new things, my mindset has shifted because it’s had to.</p>
<p>The big shift to a new User Interface is part of it. That is web tech now, not Microsoft. Any hard-earned skills making the classic client sing and dance are now outdated.</p>
<p>But it’s only part of it.</p>
<p>Modernisation, a new emphasis on running in the cloud, a shift to SaaS, and demand for things to be both secure and inter-compatible – all mean that the system itself now has a very different basic philosophy. It’s far more locked down, more restrictive technically, focused on bespoke customisation capability rather than common platform tools, more modular and less tightly coupled.</p>
<p>Bluntly, you can do less in an Epicor system than used to be possible, and it’s become a moving target so it’s not wise to push the boundaries.</p>
<h3 id="but-it-s-not-all-bad-honestly">But it’s not all bad, honestly.</h3>
<p>The key to all this is the decentralisation. Kinetic itself runs on REST APIs. Information shuttles around via calls between standalone services, because that’s how anything built for cloud works (excuse the simplification to make the point).</p>
<p>That means that at the same rate it’s become harder to make a Kinetic system do what it wasn’t designed to do, it’s become easier to link it to other things. Which opens up different approaches.</p>
<h3 id="it-s-nice-outside-you-ll-like-the-freedom">It’s nice outside, you’ll like the freedom.</h3>
<p>For years, I reckoned I could make Epicor systems do almost anything.</p>
<p>These days, I find I’m shying away from that, in favour of getting something else to do it. Quite often there’s an existing product or service, and when there isn’t I can create one. Let Kinetic do what it does, and call on something else for the new thing.</p>
<p>It’s not quite as simple as it sounds, because Epicor development work is still needed to connect and use whatever this outside service may be. But the tools for doing that are good, and stable, and not going anywhere, and a standard set of techniques work well across a wide range of possible needs.</p>
<p>And the external services?</p>
<p>I’m enjoying creating some of them.</p>
<ul>
<li>Bespoke mobile apps.</li>
<li>Mini print servers for centralised automatic printing.</li>
<li>Links to external specialised data.</li>
<li>AI processing</li>
</ul>
<p>And there are so many more already out there: CRMs, carrier automation, data APIs, mapping, webshop services, the whole Microsoft landscape of services and products that most Epicor customers are already using … there’s no end to the possibilities.</p>
<p>I’m not sure how I feel about this proliferation in some ways, particularly as more and more of it has subscriptions, but this is the way things are. And Epicor capabilities are not free.</p>
<h3 id="you-can-t-avoid-the-disruption-you-might-as-well-enjoy-the-benefits">You can’t avoid the disruption, you might as well enjoy the benefits.</h3>
<p>If you were using Epicor ERP10, you may have noticed the downsides I covered as you’ve been pushed kicking and screaming towards Kinetic. For many, I know, it hasn’t felt like an improvement, particularly admins and developers. And it’s been a bumpy ride even for those who could see the benefits of the new system.</p>
<p>This, I think, is where we all should be looking. Epicor <em>had</em> to modernise, and the modern system has a lot of advantages. We should maximise those, not fight them.</p>
<p>Don’t try to do things the old ways too much. Yes, BPMs still work well, BAQs are still powerful. Functions are (in my opinion) the best Epicor feature ever.</p>
<p>But when you’re tempted to customise, first step back and look at whether there’s something external that could be leveraged. Or even something unique to your company that you have control over and can connect to a Kinetic system that remains easy to support.</p>
]]></content:encoded>
  </item>
  <item>
    <title>What a Good Epicor Solution Looks Like</title>
    <link>https://www.metaeight.com/posts/what-a-good-epicor-solution-looks-like</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/what-a-good-epicor-solution-looks-like</guid>
    <pubDate>Fri, 26 Jul 2024 04:36:45 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description></description>
    <category>Epicor</category>
    <category>Customisation</category>
    <category>Architecture</category>
    <category>Epicor</category>
    <category>Development</category>
    <content:encoded><![CDATA[<p>OK, so you need some custom work on your Epicor Kinetic ERP.</p>
<p>That&#39;s totally fine. Don&#39;t let any experts tell you it isn&#39;t. Not everything can fit your unique organisation and processes just with configuration. But there are better and worse ways to do it.</p>
<p>I&#39;ll detail below the basic structure I use, and why, based on first several years as an in-house Epicor system admin, then as a consultant developer. It&#39;s the experience of seeing things from outside that&#39;s made the difference for me, because although nothing about what follows is inapplicable to in-house staff, they&#39;re able to get away with less whereas someone like me can&#39;t (or shouldn&#39;t).</p>
<p>(This follows from the previous post about <a href="/posts/robust-work-with-epicor-functions">robust maintainable work on Epicor systems.</a>)</p>
<h3 id="documentation-first">Documentation FIRST</h3>
<p>For trivial changes, I create a single document, titled with a ticket number and identifier. Often nobody will ever need to see it except me, but it then exists if anybody does. It usually doesn&#39;t have much in it, but at a minimum will list the components of what was done.</p>
<p>For anything more serious, I create a repository (I use GitHub). This is not because git is well-suited to Epicor customisation code, because it isn&#39;t. It&#39;s because I&#39;ve found the flexibility of a repository, and the inbuilt tracking, works well just as a record of a project. Markdown files, with links, are a good, simple, and tech-friendly way of creating documentation and making notes, even if I include no code at all.</p>
<p>To start, there&#39;s a &quot;.md&quot; file for specifications, which can be copied from what&#39;s provided, or written from scratch if needed, with links to anything else that&#39;s relevant.</p>
<p><em>Note:</em> if I am sharing the repository with whoever has commissioned the work, which is usually the case, this is an excellent way of making sure we all understand what&#39;s meant to be done, too.</p>
<p>Then there&#39;s a notes file, plus one file for each of the commonly-needed type of component a solution requires (BAQs, BPMs, Dashboards, UD Fields, User Codes, Screen Customisations, Functions etc). Notes can often be started immediately, with anything that&#39;s useful but more temporary or tentative than belongs in specifications, but the others stay empty. They are there from the start to minimise any friction noting down anything as it&#39;s created.</p>
<p>The Read Me file has links to all those others in it, and is reserved for detailing the overall structure of the solution.</p>
<h3 id="put-things-in-the-right-places">Put things in the right places</h3>
<p>Summarising the above linked post: there is usually a best place to put most elements of an Epicor solution. Logic in Functions if possible, triggered by BPMs, with only interface changes going in screen customisations. If custom data needs to be stored, do it in new UD fields rather than trying to shoe-horn it in to existing ones.</p>
<p>(For the reasons behind this, read the other post.)</p>
<p>As these elements are created, list them in the waiting Markdown documents.</p>
<p>If there are parts that are not obvious from the things themselves, or wouldn&#39;t be clear to a competent Epicor admin (or me when I come back to it) then the explanation also goes in those files. For example, I often create BAQs where the conventions in the field labels are important, because the BAQ will be processed using them by a function, so those conventions need detailing.</p>
<p>Any particularly significant code can also be included in a &quot;.cs&quot; file in the documentation, as it can be easier to link to explanations of it, and make reference easier when reviewing without direct access to the system, but the essentials are the explanations rather than the code.</p>
<h3 id="make-it-testable-as-well-as-understandable">Make it testable as well as understandable</h3>
<p>This is the critical part, and hardest to explain because it&#39;s more of a mindset thing than a set of rules.</p>
<p>As an example, suppose I have a piece of logic or action that my customisation requires.</p>
<p>I put it in an Epicor Function, for the reasons I&#39;ve given. But more than that, I try to choose a recognisable name, and I also try to make it properly standalone, which means thinking carefully about the parameters.</p>
<p>A good function, ideally, doesn&#39;t depend on anything you can&#39;t see from what&#39;s passed in or out, so it&#39;s better to pass in parameters rather than have them implicit in the workings. Restrictions on how they work mean I can&#39;t be rigid about this, but it&#39;s the ideal.</p>
<p>Similarly, as far as possible I make it impossible for the function itself to cause an error. I wrap everything in try/catch blocks that I can, and pass any resulting error out as a response parameter, including detail of the function it comes from so that whatever calls the function can decide what to do about it. That means that any error that does occur won&#39;t be a mystery, because it will contain the record of where it happened.</p>
<p>That&#39;s a minimum. The outcome of working this way is that anybody, including me while I&#39;m working on the solution, can call this function, pass in whatever test data we want, and see what we get back – including an error, if any. I&#39;ll come to ways of doing that, and improving the testing, later.</p>
<p>Where a function acts on data that isn&#39;t a simple already-existing record, I prefer to create a BAQ for the data, and pass in the name of the BAQ and any parameters to the function, so the function can call the BAQ for that data. That is less efficient, but pays back in clarity and maintainability. It means the data retrieval can be tested and adjusted independently, including by someone without all the knowledge necessary for working with the function itself. If there&#39;s any unexpected behaviour, the BAQ can be used by itself to check what data was being worked with and why.</p>
<p>Note that it is vital to document which BAQ to look at in which case, and how any conventions work! It&#39;s only clear and maintainable if people know it is.</p>
<h3 id="ways-to-improve-testability">Ways to improve testability</h3>
<p>Test-driven development isn&#39;t really possible when working with Epicor systems, but a loose aim of working that way helps, and there are some things that can be done.</p>
<p>More can be done with functions, which is one of the reasons to prioritise them. If they&#39;re constructed cleanly, it&#39;s often possible to test them by using the &quot;Schedule Epicor Function&quot; screen. One other benefit of this is that you can add code within the function to add entries to the SysTaskLog table when the function is called this way, and then you can check the System Monitor and see a list of whatever you&#39;ve chosen to log. That also means that anyone else working with the function has the option of testing what it&#39;s doing and seeing the granular results rather than simply the output. It also works equally well with on-premise and cloud systems, unlike writing to the App Server log.</p>
<p>Other ways of testing functions which I won&#39;t detail are: using a tool like Postman to call them via REST, and creating an updateable BAQ that uses the function within the GetList method to take data from the system (or BAQ parameters, or a combination) and return the results to calculated fields. Whatever method I use, I try to make sure I can isolate the function and check exactly what it&#39;s doing, and so can anyone I pass the work to.</p>
<p>For functions which perform permanent actions, like sending data to an external API, or updating records in the database, it&#39;s useful to provide some kind of &quot;test&quot; switch. This can be the &quot;Debug&quot; option provided for Epicor libraries, or an extra parameter (ideally with a default setting). When functions are created this way, they can be tested with the switch enabled, and the permanent action bypassed. Normally when this is done, the logging or return message should be set to give an indication of what <em>would</em> have happened, such as a dump of the data sent to an API. It can work well to send this in a pretty form to the error message, because then testing is possible all the way through to the user interface, if the errors are handled normally – the testing user will get a pop-up message saying &quot;this would have happened&quot; when they perform whatever action triggers the new behaviour.</p>
<p>BAQs obviously are useful because they are already inherently testable, though some of the above can be useful when creating updateable BAQs (which are also underrated as a way of isolating behaviour in a custom solution).</p>
<p>The same thinking can be applied to screen customisations, for example with a &quot;test&quot; sub-version, or a &quot;test&quot; checkbox only visible to people with developer credentials.</p>
<h3 id="the-overall-aim">The overall aim</h3>
<p>Rather than getting bogged down in the weeds of my current preferred methods, I&#39;ll zoom out at this point and assume the knowledgeable reader has seen enough of the specifics to get the idea of what they are.</p>
<p>What this is all driven by is one aim: however intricate the custom behaviour required, it should be possible for a reasonably competent person to come to it with no outside knowledge, read somewhere what it is meant to do, how it does it, and check for themselves that it is doing that wherever they need to dive in. Ideally, those permanently on the staff of the company using the system should be able to do that at any time, including when modification is needed due to changing needs.</p>
<p>That means thinking at each stage of solving the problem not just about how the system does it, but how the people who work with the system are going to manage it. If it needs extra work, or slightly less efficiency, to provide ways of letting them interact with each level of the solution, and keep as much as possible in understandable consistent chunks, that&#39;s worth doing. Not just worth doing, but pays back.</p>
<p>The difference is that I&#39;ve given them something they can use, they can understand, they can feel they depend on, and haven&#39;t thrown some black-box functionality at them and then retreated out of reach. It pays off increasingly over time, too, as it isn&#39;t rigid. If things need to change, they can change them, and if upgrades cause problems they have ways of checking where the problems are occurring.</p>
<p>Some independent developers might argue that I&#39;m making trouble for myself for no good reason, and that I&#39;m leaving future work on the table by making it less likely they&#39;ll need to come back for fixes. But so far people seem to come back for new work instead, and that feels better to me.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Robust Work With Epicor Functions</title>
    <link>https://www.metaeight.com/posts/robust-work-with-epicor-functions</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/robust-work-with-epicor-functions</guid>
    <pubDate>Wed, 10 Jul 2024 15:02:50 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>What is needed for Epicor Kinetic system work to be maintainable</description>
    <category>Epicor</category>
    <category>Functions</category>
    <category>Architecture</category>
    <category>Epicor</category>
    <category>Development</category>
    <content:encoded><![CDATA[<p>Epicor Kinetic is incredibly customisable. Really, you can do almost anything if you know the tools and mechanics well enough.</p>
<p>But Epicor themselves, and almost all consultants, will tell you – don’t do it. Or only a bare minimum.</p>
<p>Why?</p>
<p>Because there are few guarantees about non-standard workings. Not that they’ll keep working as intended, not that they’ll upgrade cleanly, not even that your processes will stay consistent. If you do things the way the standard ERP does them, you have the backup of the ERP’s creator. Within reason.</p>
<h3 id="but-my-job-is-customising-so-what-can-i-do">But my job is customising. So what can I do?</h3>
<p>Here I am, having built my business around customising and automating Epicor Kinetic. So, below, I’ll describe my most recent way of working.</p>
<p>Not only do I meddle with the standard system, I also can’t reckon on being around in the future. I work on a project, and that might be it. It had better work, it had better be reliable, and it had better be clear for anyone in the future to deal with.</p>
<p>Almost all the work I do is for companies who have very capable Epicor admins in-house. Far from trying to keep my professional secrets, I can only succeed if I’m transparent and create things <strong>they</strong> can use for themselves. Because they’re still supporting the system after my project is done.</p>
<p>Standard good practices like clear specifications and documentation help, of course. Everybody knows that, even if they don’t actually follow those practices.</p>
<p>But Kinetic itself can be used in better ways.</p>
<h3 id="keep-things-where-they-belong">Keep things where they belong</h3>
<p>Epicor has done a good job, in recent years, of creating tools with distinct purposes for customising, even if they do discourage their use.</p>
<p>There are BAQs for data access.
Customisations (“layers” in Kinetic-speak) for interface.
User Codes and UD tables for custom data.
BPMs, method and data directives, for triggering actions.
SSRS and routing for reports.
Functions for … well, that’s where it gets interesting.</p>
<p>Leaving functions aside for a minute, the key to a maintainable change to Epicor Kinetic is to <strong>only</strong> use each of these for its core purpose. No business logic in the interface, ideally no logic in BPMs even, but cleanly separate out what needs to happen and do it in the right place.</p>
<h3 id="keep-things-basic">Keep things basic</h3>
<p>When I say “basic”, I don’t necessarily mean “simple”. Simple is best where possible, but it’s even more important to get to the root of the workings, and work with what is least likely to change.</p>
<p>I find, for example, that widget-based workflows have a habit of breaking, because they have to depend on high-level assumptions about how the system is going to keep working, and upgrades often change things. Code that carefully uses the core Business Objects that the system exposes, in ways standard for the platform it’s built on, is more robust.</p>
<p>I sometimes talk to clients about working “with the grain” – finding out where the system works most naturally similar to what they want to achieve, and leveraging it, rather than trying to override anything.</p>
<p>Where something is completely different and the system doesn’t cover it at all, it’s often better separated out completely.</p>
<p>And, do things in a repeatable and predictable way. Don’t create solutions to be clever, create solutions that are, as far as possible, just what anyone competent would expect to see. Not least yourself when you come back to it.</p>
<h3 id="use-functions">Use Functions</h3>
<p>“Epicor Functions” have changed the way custom logic in Kinetic should be approached. Because they’re isolated and reusable, they allow custom logic to be kept in one place.</p>
<p>In general, what you <em>can</em> do in a BPM, you should normally do in a function and call from a BPM, unless it’s trivial.</p>
<p>This is not about the system itself, or any efficiency or capability, it’s all about the humans responsible for the system.</p>
<h3 id="so-this-is-what-i-do">So this is what I do</h3>
<p>When I have a project for a company, most types work like this.</p>
<p>Create a Function Library for the core workings.</p>
<p>A whole series of posts could be written about how this is done in itself, but the point is that all the logic is in functions in this library, and ideally nothing repeated. And nothing should need changing unless the logic needs to.</p>
<p>If there are company-specific details that need to be used by those functions, and might change, they are stored in a dedicated set of User Codes. <strong>Never</strong> in the code itself. So, for example, with a REST integration, the endpoints and access details are in User Codes.</p>
<p>If the function assembles non-trivial data from the system to put somewhere, either pass it into the function from outside, or call it in via a BAQ. This is controversial to some, because it’s less efficient (slightly). But it has the massive advantage that other Epicor users and admins can access and adjust that BAQ, and therefore the data used, without needing to know anything about the logic or the code so can leave the functions alone.</p>
<p>If it’s an integration, either calling on an external system or callable from an external system, make <em>all</em> calls via the function library.</p>
<p>Where needed, use method and data directives to call the functions when triggered by system events.</p>
<p>Where needed, show new and different data to users in the interface and allow them to interact with it.</p>
<p>If something really radically outside the system scope is required, build it elsewhere with an API and call on it from functions.</p>
<h3 id="what-does-this-achieve">What does this achieve?</h3>
<p>What I’ve realised is that when I, as an outsider, create a solution for a company’s Epicor system, success depends not just on the end users. My <em>real</em> customer, usually, is the in-house expert who has to maintain everything.</p>
<p>By creating a modular solution, I give them additional functionality, not just a tick in a list of things they’re asked to provide.</p>
<p>A good function-based system can be tweaked, re-used and extended, because the functions are usable alone. And if architected like this, they’ll be robust and flexible enough for it. So it continues to be a win beyond the initial scope, long after it’s been signed off.</p>
<p>It takes a different kind of approach to build for maintainability, and I have yet to see much discussion about it from developers.</p>
<p>Another of these posts can go into more detail about how the components are structured.</p>
]]></content:encoded>
  </item>
  <item>
    <title>What You Get With an Independent Epicor Expert</title>
    <link>https://www.metaeight.com/posts/what-you-get-with-an-independent-epicor-expert</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/what-you-get-with-an-independent-epicor-expert</guid>
    <pubDate>Thu, 23 May 2024 11:30:10 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>If you&apos;re wondering what it&apos;s like to get someone independent involved, here&apos;s one independent&apos;s take</description>
    <category>Epicor</category>
    <category>Epicor</category>
    <category>Business</category>
    <content:encoded><![CDATA[<p>This follows my blunt explanation of <a href="/posts/small-consultancy">your choices when hiring outside Epicor expertise.</a></p>
<p>If, after that, you are wondering about an independent expert (yes, like META eight), you may wonder what you&#39;re letting yourself in for.</p>
<p>You may be wondering because you&#39;re the person responsible for the Epicor system at your business (Hi, I&#39;ve been in your shoes!) and while you could really do with help of some kind, you <em>really</em> don&#39;t want to be responsible for expense and things going wrong or not getting completed that are out of your hands. And, whether you admit it to yourself or not, you worry that you may undermine your own position in some way by showing up a lack of competence or looking less necessary.</p>
<p>Or, you may be responsible for a wider part of the business, or all of it, and this is on your mind because you have a problem to solve.</p>
<p>There&#39;s a simple short-cut if you want. Talk to us. Talk to me, in fact – I don&#39;t bite, and I don&#39;t push. If you don&#39;t like what I say then I don&#39;t chase either.</p>
<p>But that said, here&#39;s what we, at least, aim to do for you.</p>
<p>What we like is a defined need. That&#39;s usually a more or less complex project related to your Epicor system outside your business-as-usual. We take that, and give you a solution for a known price (give or take how flexible you want to be about what you&#39;re asking for). We also make sure that you know how it&#39;s done and how it works, so there&#39;s no subtle elastic keeping you tied to us for anything related to that in future. As a business, you pay for results and new capability, not more staff.</p>
<p>Personally, I&#39;ve yet to do any work for a company that didn&#39;t have its own capable Epicor experts in-house, and that&#39;s the way I like it. A system as capable and complex as Kinetic needs at least someone who knows it well and can configure and develop.</p>
<p>When you&#39;re in one environment, though, projects and needs do come up that are new. What someone from outside gives you is instant experience on tap when you need it. And you can benefit from that experience not only directly, in more quickly and reliably getting a particular thing done, but also indirectly as you see how it&#39;s done. Far from being a threat, that&#39;s a boost.</p>
<p>Effectively, you have training thrown in, as well as projects completed that otherwise would be a problem.</p>
<p>A good independent Epicor consultant/developer is a force multiplier. Not a replacement for anyone you have, not even like an extra member of staff, quite. If they&#39;re good, they&#39;re more than that – you have, on-call, experience and capability that&#39;s different to the kind achieved by being very deep into one particular system. And that not only lets existing staff focus cleanly on what they&#39;re most needed for, it gives them access to new knowledge as they find they need it too.</p>
<p>OK, you say, so how do we know whether a consultant or developer is good?</p>
<p>Well, that&#39;s quite easy and low-risk, too. You try them with a small project. That&#39;s the great thing about independent people, too. No big commitment needed, and if it doesn&#39;t work you haven&#39;t lost much.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Types of Epicor help</title>
    <link>https://www.metaeight.com/posts/small-consultancy</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/small-consultancy</guid>
    <pubDate>Wed, 28 Feb 2024 05:00:00 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>When you need some expert help or consultancy with your Epicor ERP, what type will suit you?</description>
    <category>Epicor</category>
    <category>Epicor</category>
    <category>Business</category>
    <content:encoded><![CDATA[<p>I&#39;m terrible at sales, so I&#39;m just going to tell you where else you can go when you need Epicor expertise.</p>
<p>Chances are, however good your staff are with Kinetic and Epicor systems, you&#39;ll at least consider getting some expert help at some point. You may be here because that&#39;s what you&#39;re doing right now.</p>
<h4 id="1-the-safest-choice">1. The safest choice</h4>
<p>You can go right to the source, and get <a href="https://www.epicor.com/en-uk/customers/support-services/">Epicor Professional Services</a> to assist.</p>
<p>Nobody has better access to knowledge, tools and the inside track on where your system is going. Nobody has a wider variety of experience of companies using Epicor systems, so it&#39;s unlikely there isn&#39;t at least somebody who has a good solution for whatever you want. And they&#39;ll guide you in the most normal way of doing things, and the least likely to trip you up as the system is upgraded in future.</p>
<h4 id="2-official-partners">2. Official partners</h4>
<p>Epicor also have official partner consultants.</p>
<p>These are usually staffed with people who have worked for the biggest companies, in a lot of cases Epicor. They pay to be partners so they get a lot of direct support. To do that, they usually have to be quite big, which means there is massive breadth and depth of experience.</p>
<p>I can&#39;t vouch for many partners, but I know one example I&#39;ve worked with a few times who are excellent: <a href="https://clearbusinessoutcome.com">Clear Business Outcome</a>.</p>
<p><strong>These two options, Epicor and their partners, are the best options for a whole lot of work, and definitely for big projects.</strong></p>
<p>If you&#39;re implementing Kinetic from scratch, doing a major upgrade, shifting to the cloud, anything like that, you need the big guns. You may also choose to go that way anyway – you&#39;ll have a project manager, an account manager, and a horde of specialists and developers all with their own area of expertise, and they WILL get your work done. They have tried and tested processes and systems, and they won&#39;t be derailed by the unforeseen, because there&#39;s plenty more resource and expertise beyond what you see.</p>
<h4 id="3-it-agencies">3. IT Agencies</h4>
<p>Some agencies do have departments specialising in particular ERP software, including Epicor. While they&#39;d prefer to find you a new employee, they will help get you a contractor or specialist if you ask.</p>
<p>Two I&#39;ve worked with are <a href="https://www.itworksrec.co.uk">IT Works</a> and <a href="https://www.washingtonfrank.com">Washington Frank</a>.</p>
<p>This way, you get vetted people, and the backup and coverage of professional agencies who know all about putting specialist teams together and finding the right skillsets.</p>
<h4 id="4-independents-yes-like-meta-eight">4. Independents (yes, like META eight)</h4>
<p>These are last on the list for a reason. They&#39;re frequently the last choice, because they feel like a risk.</p>
<p>They&#39;re the individuals and little teams who have clear expertise, otherwise they wouldn&#39;t be doing the work, but don&#39;t have the reputation and support structure of the big consultancies, so you can&#39;t be sure how good they are, or what you might be able to do if the work isn&#39;t good enough.</p>
<h4 id="choosing">Choosing –</h4>
<p>Something to realise at this point is that you are NOT choosing a type of person here. The particular individual rolling up their sleeves and getting stuck into your Epicor system could be exactly the same through any of these routes. Not only do the same pool of experts change roles, and move between companies and try self-employment (some liking it, and some moving back to the security of a bigger company) ... there is sub-contracting too, and you may find (or never know) that an independent is doing crucial work even though a big consultancy is handling your project.</p>
<p>And that individual is probably paid much the same whether they&#39;re working directly or via another route, which puts the spotlight on the elephant in the room of this discussion: you will pay more for the same work from a big consultancy.</p>
<p>So are options one and two above bad value? Of course not.</p>
<p>What you get with a big company is all the things that are <strong>not</strong> the actual changes. Basically, security and peace of mind.</p>
<p>You get management, processes, back-up and redundancy. You can put a crucial project in the hands of a consultancy like this and nobody will blame you if it isn&#39;t handled well, because it&#39;s their reputation on the line and their processes controlling it. They have ways of doing things, people for each thing that needs doing, including liaison and management of what&#39;s done. That costs, but it pays back in controllability, predictability and insurance (not literal insurance, because we should all have that, but the plans B, C and D that are sometimes essential). The backbone of any IT project are the advisers and developers, however it&#39;s done, but as soon as something scales up there needs to be a lot more people doing things that are not that core work, just to make it all work smoothly.</p>
<p>The big message here is: <strong>do NOT opt for an independent to save money.</strong> That&#39;s false economy.</p>
<p>And here I am, speaking for an independent consultancy, saying that.</p>
<p>What are the good reasons companies have for choosing us, or those like us, or contractors, then?</p>
<p>Well, the clue is in what the big options do well, and whether you want that. If you know exactly what you want to achieve, or want to move fast, or have an edge case to solve that isn&#39;t common – the predictability and management layers of a &quot;proper&quot; project team may feel as though they get in the way. The thing I hear most from clients is &quot;I just want to be able to talk to the person doing the work&quot;.</p>
<p>That might be because you have your own team, and trust them, and just want a bit of specialist help or more personnel for a while (that&#39;s why the big consultancies use independents and contractors too). Or it might be that you want a more personal approach. Even that you want to try something completely new that others have told you can&#39;t or shouldn&#39;t be done, and you think they&#39;re wrong.</p>
<p>Companies come back to us regularly because they like being able to say &quot;can you just ...?&quot; I&#39;m pretty sure.</p>
<h4 id="as-i-say-i-m-terrible-at-sales">As I say, I'm terrible at sales.</h4>
<p>We know who we can help, and the kinds of things we&#39;re best at, and it doesn&#39;t make sense to pretend otherwise. If this helps you realise that you&#39;d be most comfortable with a bigger player in the Epicor space then that suits us too.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Can you use AI practically in business?</title>
    <link>https://www.metaeight.com/posts/chatgpt-llm-in-development</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/chatgpt-llm-in-development</guid>
    <pubDate>Wed, 31 May 2023 05:00:00 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>ChatGPT and AI tools have a lot of hype. Are there practical business uses an independent ERP developer can find? Maybe.</description>
    <category>Dev</category>
    <category>AI</category>
    <category>Epicor</category>
    <category>Development</category>
    <content:encoded><![CDATA[<p>AI Chat is fun.</p>
<p>Once the novelty of a machine being able to give answer in poetry, or whatever, has worn off, though, you may well ask what it’s actually useful for in business.</p>
<p>Well, things are moving so fast that this post may be outdated very quickly, but there <em>are</em> clues to the kinds of things that become possible (or just easier and cheaper) when you have access to these systems.</p>
<p>This is my experience, as an independent ERP developer, an AI semi-sceptic.</p>
<h3 id="using-the-apis">Using the APIs</h3>
<p>Firstly, to be serious about this, you need to get out of the browser and work with the back end of the systems.</p>
<p>For now, as of writing, I’ve been using OpenAI, which is ChatGPT. The principles should be the same for any others. You need an account, it will start to cost, and there is some technical setting up. I won’t get into that here – it’s easy enough to find details online. If you’re thinking “business”, none of it is scary or off-putting.</p>
<p>So far, I’ve successfully used the same APIs as part of projects in Javascript, Python, C# and in Microsoft’s Power Automate. And for at least two of those I really count as an amateur.</p>
<p>Doing it the API way strips away some of the magic. Which is good and bad.</p>
<p>When you make a call to a Large Language Model (LLM) chat API, it becomes clear that you are not conversing, and there is nothing like a person on the other end. It’s become a cliché, but it really is a glorified autocomplete. Each call is a distinct one-off event, and it doesn’t remember anything from one to the next that it didn’t know already. So getting good results means giving it plenty of context, exactly the information it needs to give the kind of answer you’re looking for.</p>
<p>And generally, it doesn’t know any of <em>your</em> specific information. If you’ve told it once, it still doesn’t. Not even if you’ve told it every time so far.</p>
<p>So calls to an LLM API mean constructing a prompt well, above all. And being completely clear about what you want back.</p>
<h3 id="chatting">Chatting</h3>
<p>As a start, people generally want to reproduce the “chat” experience, I notice. Maybe people find it useful to have a bot answer questions, and you want it to be under control within your own system.</p>
<p>Without special sauce, beyond the scope of this post, it will only ever be very generic, but I won’t judge. People like chatting with machines, at least for the moment.</p>
<p>To give the user the impression they’re having a conversation, the trick is to keep feeding back into the API the conversation so far.</p>
<p>Outside of the calls, you can save each user query and each AI response, building up an array. With OpenAI’s system, this works as the data pairs “role/content”, where “role” alternates between “user” and “assistant” (or whichever equivalents you pick). For each new user input, you send the entire set as part of the prompt, finishing with the newest. That means that as the conversation progresses, the LLM can tell what response is most likely to be wanted next.</p>
<p>There are two hurdles.</p>
<p><strong>First</strong>, it helps to provide context and a persona to the LLM to tell it how to act. This can be done by keeping additional messages at the beginning of the queue with role “system” – from “You are a helpful assistant” to increasingly specific characteristics and background information.</p>
<p>I’ve found that simple personas like “knowledgeable but sarcastic assistant” are surprisingly successful, if that’s the kind of thing your users like.</p>
<p><strong>Second</strong>, each call has a size limit, and bigger calls are more expensive, so unless you can guarantee each exchange will be brief, these queues of past messages will need to be cut down periodically. You could do this by progressively deleting the oldest, but I have also had success with getting earlier parts of the conversation summarised and added as context messages, like the persona one.</p>
<p>It’s also a good idea to decide when and how the message queue gets flushed, so irrelevant context doesn’t keep getting sent, adding to the cost and worsening the results.</p>
<h3 id="an-aside-on-chatting-to-an-ai-while-at-work">An aside on chatting to an AI while at work</h3>
<p>I was a bit dismissive, back there in the last section, wasn’t I? Implying that these chatbots aren’t really helpful.</p>
<p>Can’t they do all sorts of useful things? Write all your code?</p>
<p>Actually, to an extent they can, if you don’t get your hopes up too high.</p>
<p>ChatGPT and OpenAI don’t know anything about the workings of Epicor as far as I can tell, so they can’t do much of my development work. But they <em>do</em> know about C#, .NET and Microsoft tech, so requests for boilerplate code can be quite successful. If it’s routine and generic, it’ll be pretty good.</p>
<p>Of course, the problem is that if you know enough to ask for routine and generic, you can probably put it together yourself without much more trouble. But anyway, the potential for being a bit lazier is there.</p>
<p>Where I found it more useful was when I switched to unfamiliar languages. I’m rusty on Javascript, so it was handy to be able to ask for code when I got stuck. The key is that I needed to know what to ask for, and if I didn’t know <strong>any</strong> code then it probably wouldn’t have been able to bridge the gap.</p>
<p>More prosaically, it’s been handy for snippets of unimportant stuff.</p>
<p>I wanted some random HTML to include in an illustration, and it took moments to get some that worked well and was ready-formatted.</p>
<p>I’ve left our own experimental bot running, because we’re a multilingual household, and I added the ability for it to watch for national flags as reactions to human messages, and translate the message accordingly. It’s very good at that.</p>
<h3 id="real-applications">“Real” applications</h3>
<p>None of that is moving the needle much, is it? So why have I bothered with a long post on the subject?</p>
<p>Well, if I’m honest, partly as a counter to some of the hype. But there <em>are</em> things that are handy.</p>
<p>For me, the value has been in simple, predictable but “fuzzy” applications, where generic knowledge can apply to a specific query.</p>
<p>As an example, one that’s been running for a little while in our own business:</p>
<p>In our bookkeeping, we use fairly standard account codes for spending and expenses, but the exact set are unique to us. It turns out that an OpenAI call is very effective at deciding which code applies.</p>
<p>The routine pulls together the available codes, with descriptions, tells the LLM to assume the persona of a UK bookkeeping assistant, and the format of response required, which is basically JSON. It then supplies two examples with responses, and a third which is the current expense to be categorised. All of this is structured in the form of a chat, with the initial instructions as “system” role messages, and the examples plus the real query as “user” and “assistant” exchanges.</p>
<p>For OpenAI, we can also adjust the “temperature” of the generated response, which is a measure of randomness or, as experienced by the user, creativity. So we set that very low, say 0.1.</p>
<p>When called as part of the input of new invoices, we get (so far) quite ideal spending categories applied.</p>
<p>Is it overkill?</p>
<p>It may well be, just for this. There are other approaches that could do much the same, probably.</p>
<p>But the interesting thing is how quickly adaptable the “Chat AI” system is, and how re-applicable. It doesn’t care what the categories are, or what for. The same structure could be re-purposed with almost no change to apply categories to anything. All that needs adjusting is the data to be fed to it (which in our case is fetched from the database records). And if the categories change … well, the lack of memory means it was all fresh to it every time anyway, so it’s at no disadvantage. There’s no retraining, or extra conditionals to add.</p>
<p>So the key here appears to be: sufficiently generic context (in this case UK bookkeeping conventions), specific data on the exact requirements (our categories and some examples), tightly specified response format, including the examples (our JSON schema, which feeds into the rest of the routine), and the ability to package all that in the form of a chat exchange.</p>
<p>As someone used to development, which is meant to be rigorous and logical, this all feels a bit like witchcraft. It’s more like incantation than programming. But it works, and with a lot less trouble than a bespoke solution.</p>
<p>If you have something that could do with a humanlike judgement routinely, those conditions above apply, and you can package it successfully … yes, I conclude that generic LLM calls are a useful way forward.</p>
<p>It’s also easier, frankly, if the inputs aren’t directly from a human, even if that does make it much more dull and invisible.</p>
<p>I, for one, am continuing to explore what’s possible beyond this simple and naive approach.</p>
]]></content:encoded>
  </item>
  <item>
    <title>New ERP or Re-work? Changing the engine while the plane is flying, part 1</title>
    <link>https://www.metaeight.com/posts/reconfigure-or-replace-epicor-erp</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/reconfigure-or-replace-epicor-erp</guid>
    <pubDate>Thu, 16 Feb 2023 05:00:00 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>If your ERP isn&apos;t working for you, the problem may be how you&apos;re using it rather than the ERP itself. Here are some things to consider about choosing a way to fix that.</description>
    <category>Epicor</category>
    <category>Implementation</category>
    <category>Epicor</category>
    <category>Configuration</category>
    <content:encoded><![CDATA[<p>Sometimes a business looks around at its ERP and realises it’s not fit for purpose.  </p>
<h4 id="new-erp">New ERP!</h4>
<p>Someone will often then talk about a new ERP. Or, short of that, a full new re-implementation. But most often a new ERP.  </p>
<p>At this point – stop.  </p>
<p>Is the problem the ERP, or is it the way it’s set up? Unless you’ve let an old system gather dust without updating for years, the ERP itself is probably capable enough, and the problem is how you’re using it.  </p>
<h4 id="new-erp-without-any-of-the-problems">New ERP! Without any of the problems!</h4>
<p>OK, maybe so. But a new implementation will force you to fix that, right?  </p>
<p>Beneath the surface, this is often a big driver of ERP implementations. When there’s a new system to install, you <strong>have</strong> to fix all the things. FIX THEM ALL. Everybody loves the idea of having all the niggles fixed, and there will be no excuse.  </p>
<p>ERP sales people know this well.  </p>
<p>Think, though. You&#39;ll be fixing those problems <strong>and</strong> working out how to make a new system work for everything that <strong>is</strong> working, <strong>and</strong> getting everybody to learn new ways of doing everything, <strong>and</strong> new interfaces, all at the same time.  </p>
<p>This is not just repairing the engines while the plane is flying, it&#39;s removing them entirely and replacing them.  </p>
<p>Too often, once the project is under way, it&#39;s as much as the business can do just to get the new implementation done <strong>at all</strong>, and all those nice process fixes take a back seat. Everything is so new that people push for things to be done the old way wherever they can, even if those old ways were the problem in the first place. And the people doing the work are too exhausted to push back.  </p>
<p>New ERP, with a mix, now, of old and new problems. Lovely.  </p>
<h4 id="so-what-s-the-alternative">So what's the alternative?</h4>
<p>Here I assume you have Epicor ERP10 or Kinetic, because I <strong>know</strong> those are capable enough for most businesses.  </p>
<p>If you have problems, there&#39;s almost certainly a mismatch between your business processes and how you&#39;re using the system. Often that dates back to a few key decisions taken when implementing that turn out to be drawbacks, and either you feel stuck with them or it hasn&#39;t occurred to anyone to question the original assumptions.  </p>
<p><strong>Before</strong> deciding what to do, visualise what a working system would do, and how. What would the business run like, say, two years from now, problem-free? What would that actually be like, and what are the key differences from now?  </p>
<p>You might need experienced help with this, or you might not.  </p>
<p>Now, if you were starting again with the ERP you have, could it do all that?  </p>
<p>If the answer is yes, even with some expert work, then <strong>do</strong> consider making that happen.  </p>
<h4 id="why-though">Why, though?</h4>
<p>No matter what the sales people tell you, a new ERP won&#39;t fulfil your new vision out of the box. It might be a bit closer, and it&#39;s worth getting independent expert advice (not from me, from someone who knows multiple ERP systems) on whether it might be close enough to be worth all the expense and trouble of changing.  </p>
<p>In most cases, though, the work to configure it will be necessary in a new system, and can be done to the old system.  </p>
<p>Not only do you save, keeping the old system, but by losing the time, effort and expense of changing even the basics, you free it up for changing actually what you want to change. This makes a serious difference.  </p>
<p>It isn&#39;t as glamorous as a shiny new system, and don&#39;t underestimate how important that is as a draw. Shiny and new <strong>is</strong> attractive. It just isn&#39;t always rational.  </p>
<p>You can have your vision with the ERP you have, probably. It will be hard work making the changes, and there is a right way and many wrong ways between now and that blissful future. You will probably need expert help, just less of it than for a whole new implementation.  </p>
<h4 id="ok-so-how-then">OK, so how, then?</h4>
<p>Well, this is long enough, so there will need to be a part two.  </p>
]]></content:encoded>
  </item>
  <item>
    <title>Should We Upgrade to Epicor Kinetic?</title>
    <link>https://www.metaeight.com/posts/should-we-upgrade-to-epicor-kinetic</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/should-we-upgrade-to-epicor-kinetic</guid>
    <pubDate>Mon, 15 Nov 2021 05:00:00 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>Epicor ERP10 has turned into Epicor Kinetic, and maybe that&apos;s a reason to be nervous? Upgrading doesn&apos;t need to be a big deal, actually, and lets you take advantage of improvements.</description>
    <category>Epicor</category>
    <category>Upgrade</category>
    <category>Epicor</category>
    <content:encoded><![CDATA[<h4 id="epicor-erp10-has-turned-into-epicor-kinetic">Epicor ERP10 has turned into Epicor Kinetic.</h4>
<p>Whizzy and new.</p>
<p>If you’re already using ERP10, it might feel <strong>TOO</strong> new. There’s been a lot of fanfare about the whole new interface, new client, entirely fresh ways of interacting with the system.</p>
<p>And a lot of buzz about cloud.</p>
<p>Maybe you quite like your on-premise system, and all the tweaks you’ve made to it, and aren’t sure if you’ve quite got the time to go through a whole new way of doing everything?</p>
<h4 id="i-have-good-news">I have good news.</h4>
<p>As I write, in late 2021, I am working on several different Epicor installations between 10.1 and Kinetic 2021.2, and all the things that might involve more change than you’re ready for … they’re all optional.</p>
<p>Kinetic itself is a nice upgrade from ERP10, no more scary than a point upgrade and a lot less than some there have been.</p>
<p>You can keep using the existing client.</p>
<p>No retraining for a new interface, no finding that the customisations you’ve made don’t work or need re-doing (any more than for a normal upgrade, anyway). You can carry on as you are.</p>
<p>And, for those who are interested, the technical stuff underneath gets better and better. If you do like to customise, there are more and better ways to do it. I’ve enjoyed working with Kinetic, myself.</p>
<p>Kinetic is the way things are going, and it is possible to take it gently. If you do upgrade, it seems possible to dip your toes in to what’s new - anything new may appear in a new form, but that’s OK, because it’s new anyway. What you and your users already know can stay as it is until you’re ready.</p>
<p>It’s up to Epicor to make it worth your while to take the plunge into all that’s new, and in the case of the interface they haven’t really tempted me yet, I confess. But that’s OK. It’s there waiting, and I for one would sooner not get too far behind.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Setting a Custom Task or Process to run on an Epicor Schedule</title>
    <link>https://www.metaeight.com/posts/custom-task-on-a-schedule-in-epicor</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/custom-task-on-a-schedule-in-epicor</guid>
    <pubDate>Wed, 01 Sep 2021 05:00:00 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>Epicor is good at standard scheduled tasks, but there&apos;s no obvious way to set custom tasks or processes to run after a delay. Here&apos;s how it can be done.</description>
    <category>Epicor</category>
    <category>Schedules</category>
    <category>Epicor</category>
    <category>BPM</category>
    <content:encoded><![CDATA[<p>Once you start automating, sooner or later you want something to happen at a particular time, not just because something else happened.</p>
<p>If you’re using Epicor, you have the System Agent to do that for built-in process and tasks, and you can set reports to happen at certain times.</p>
<h5 id="what-if-it-s-something-completely-custom">What if it’s something completely custom?</h5>
<p>Or maybe it should happen when triggered, but after a delay?</p>
<p>Ah …</p>
<p>There has been a module specially for that, but you don’t need it.</p>
<p>(You can also use Service Connect, if you have that, but if you do, you probably know that).</p>
<p>Epicor is very good about allowing even the deeper guts of the system to be used in BPMs, so that means you can automate the scheduling too.</p>
<p>When something needs to happen, but not quite yet, you can create or alter a schedule instead of doing the task directly. A second BPM set can then fire when the schedule changes to do the actual work.</p>
<p>Obviously these schedule-related BPMs need constructing with great care, because they will fire for every schedule change of every kind. They need conditions which exit as soon as possible when they are not required.</p>
<p>There are a few ways this can be useful.</p>
<p>We use this for some tricky integration components, for example, where data needs to be synced to an external system. In some cases we need to be sure that Epicor has finished complex updates before the sync happens, so it’s wise to delay, or the sync process would interrupt further triggers that need to complete so the user can finish their task. In others, a constant mass of data would swamp the integration system, so updates are added to a queue until the last is complete and then all sent at once.</p>
<p>That last case is particularly interesting, because it provides a neat way to handle things that happen in batches (invoice posting, for example). Each event moves the schedule on a little further, so the final scheduled task automatically happens only when there’s a break for it.</p>
<h5 id="warning">Warning</h5>
<p>As I’ve already hinted above, DO NOT APPLY THIS TECHNIQUE RASHLY.</p>
<p>If you don’t know what you’re doing, particularly with data directives, leave this method well alone, because you could gum up your Epicor system and slow it to a crawl. But it’s very powerful and solves otherwise insoluble problems, done with care and precision.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Epicor CRM - better than an Opportunity?</title>
    <link>https://www.metaeight.com/posts/epicor-crm-better-than-an-opportunity</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/epicor-crm-better-than-an-opportunity</guid>
    <pubDate>Tue, 27 Jul 2021 05:00:00 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>Epicor&apos;s CRM module is very powerful, but one part of the standard way it&apos;s configured holds most users back. Here&apos;s what works better.</description>
    <category>Epicor</category>
    <category>CRM</category>
    <category>Epicor</category>
    <content:encoded><![CDATA[<p>I’m going to be blunt.</p>
<h4 id="the-correct-way-to-set-up-epicor-crm-is-wrong">The “correct” way to set up Epicor CRM is wrong.</h4>
<p>I’m pretty sure it’s the biggest reason why the CRM module doesn’t get a lot of love, even from committed Epicor users.</p>
<p>Epicor CRM has everything you need.</p>
<p>OK, it’s not ideal that the functionality is spread over a lot of screens, but a few dashboards can fix that. It’s actually very powerful, and the functions you need in a CRM are almost certainly there.</p>
<p>Just as long as you don’t use Quote/Opportunity for most of it.</p>
<h4 id="the-thing-about-crm-is-that-friction-kills-it">The thing about CRM is that friction kills it.</h4>
<p>Nobody WANTS to enter data into CRM, no matter how much they want that data to be there when they look for it, and nobody wants to be spending time on admin when they’re looking after customers or hunting new ones.</p>
<p>The answer, in the Epicor system, is the wonderful multi-tool that is the HelpDesk Case.</p>
<p>To create and save a Case, you only need to enter a summary of what it’s about, with a selected Workflow.</p>
<p>The end.</p>
<p>If that’s all you have time for, it works. You can add the customer, the contact, a product, a logged call, a task, whatever, later when you DO have time.</p>
<p>You can use the same Task Sets as for Opportunities, you can link anything you like.</p>
<p>If you’re used to using a Quote as an Opportunity then it’ll be a revelation how quick and easy it is. Epicor’s Quote system is ludicrously powerful, but it’s overkill for a simple enquiry.</p>
<p>Oh, and if you’re using a Case instead, once you get to the point of needing to Quote, you can create and link a Quote from the Case anyway.</p>
<p>If you have Epicor, and you’re considering CRMs, take another look at the built-in module with this in mind, and it suddenly becomes a real option. Which is great, because it keeps you in the system you’re already using and everyone knows.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Should you still be using Epicor Service Connect?</title>
    <link>https://www.metaeight.com/posts/should-you-still-use-service-connect</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/should-you-still-use-service-connect</guid>
    <pubDate>Fri, 21 May 2021 05:00:00 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>Epicor Service Connect feels like an unloved integration solution these days. META eight discusses whether it&apos;s still a useful solution, and what to do if you want to future-proof.</description>
    <category>Epicor</category>
    <category>Service Connect</category>
    <category>Epicor</category>
    <category>Integration</category>
    <content:encoded><![CDATA[<h5 id="recently-i-ve-had-a-few-people-say-to-me-that-they-re-not-comfortable-relying-on-epicor-s-service-connect">Recently I've had a few people say to me that they're not comfortable relying on Epicor's Service Connect.</h5>
<p>I can understand that.</p>
<p>Service Connect has always been a bit of a dark art. People who know how to get the best out of it are few and far between, and that&#39;s a problem for a tool that might act as a vital junction among your systems.</p>
<p>And this kind of tool <strong>IS</strong> increasingly vital.</p>
<p>Everything needs to talk to everything else these days, and things like Service Connect, which enable that communication, are only going to become more and more crucial.</p>
<p>I&#39;m going to go out on a limb here, though, and say that if you already have Service Connect running, and it&#39;s doing what you want, you should be happy with that for now. There is nothing wrong with it. It&#39;s as good as it ever was, and there&#39;s no sign that Epicor is going to pull the plug on it any time soon.</p>
<p>Plus, most of the alternatives gleaming all shiny in vendors&#39; sales packages - they&#39;re going to cost you, one way or another. You need a real reason to switch, not just a sense that the dust might be building up on what you have.</p>
<h5 id="so-what-is-a-reason-to-switch">So what IS a reason to switch?</h5>
<p>If you&#39;re needing to do something entirely new, and you&#39;d need to find someone to create complex new workflows in Service Connect (assuming you can&#39;t do them in-house), you should weigh the costs of moving across to a new solution. Not forgetting to count the expense and hassle of changing what&#39;s already working.</p>
<p>And if you don&#39;t already have Service Connect, I&#39;d be hesitant to recommend it as a new installation at this point.</p>
<h5 id="that-is-hassle-is-there-a-halfway-house">That is hassle. Is there a halfway house?</h5>
<p>Glad you asked.</p>
<p>Service Connect traditionally calls directly on Epicor ERP via the client libraries, which is a very intimate kind of connection.</p>
<p>But it also works quite well for <strong>REST</strong> calls. <strong>And Epicor ERP is now all in on REST.</strong></p>
<p>So you can kill two birds with one stone here.</p>
<p>You can move the logic of what you want to do into the ERP system itself, and expose simplified calls as Epicor Functions available via REST. That future-proofs your functionality, and widens the pool of people who can work on it, even if there&#39;s a lot of bespoke.</p>
<p>You can then make the REST calls from Service Connect, and the workflows should be as simple as humanly possible.</p>
<p>Not only does that remove most of the problems associated with using Service Connect in the first place (reliance on something that is difficult to support and few people understand well), it becomes relatively trivial to replace with an alternative tool at any time.</p>
<p>If you keep all Epicor ERP logic within Epicor ERP, Service Connect - or any replacement - has no need for tight coupling, and whoever is managing that part of the system needs no direct knowledge of the ERP&#39;s workings.</p>
<h5 id="tl-dr-rest-is-now-the-way-to-go">TL:DR - REST is now the way to go.</h5>
<p>But the key thing to realise is that you can go REST-based now, and move on from Service Connect later as and when it makes sense.</p>
<p>And at META eight we&#39;re experienced with both Service Connect and REST, so if you want even-handed advice feel free to talk.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Dynamic Query and Epicor Client Customisation Made Easy - part 1</title>
    <link>https://www.metaeight.com/posts/epicor-client-customization-with-classes-1</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/epicor-client-customization-with-classes-1</guid>
    <pubDate>Wed, 12 May 2021 05:00:00 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>Using Epicor&apos;s Dynamic Query object and classes within client code can make customization much richer and easier to manage. META eight shares a proven way to do it, starting here.</description>
    <category>Epicor</category>
    <category>Customization</category>
    <category>Epicor</category>
    <category>M8DynQuery</category>
    <content:encoded><![CDATA[<p><strong>Epicor is moving away from the Windows client.</strong></p>
<p>But it’s still core to most installations at this point, and may remain so for a while. Not only because there is so much familiarity with it, but because it’s extremely customisable, and the newer systems have a long way to go to catch up.</p>
<p>For me, there have been two keys to moving beyond simple customisations in the Epicor client. Between them they allow bespoke screens that can do practically anything.</p>
<ol>
<li>Epicor’s “Dynamic Query” business object.</li>
<li>Using classes within the customisation code.</li>
</ol>
<p>Dynamic Query is the way to call on Epicor’s BAQs (Business Activity Queries, or user-created ways of pulling together Epicor data). That means one object gives you access to exactly the data you choose, and you can create parameters to make it completely dynamic.</p>
<p>The benefit of adding classes to a customisation is more subtle. They allow what you create to be more modular. Declare a class, create an object of that class, and all the functionality you need is repeatable without cluttering the core code Script.</p>
<p><strong>Combining the two means you can bring in what data you like and make it work together without getting tangled up.</strong></p>
<p>This works so well that we’ve created two standard class families that we re-use all the time, and for the first time we’re sharing them publicly.</p>
<p>They’ll be appearing on GitHub - the first elements are there already as <code>M8DynQuery</code>, and more detail will be joining them.</p>
<p>Look out for more posts around how <code>M8DynQuery</code> works and what you can do with it.</p>
]]></content:encoded>
  </item>
  <item>
    <title>This website is static</title>
    <link>https://www.metaeight.com/posts/this-website-is-static</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/this-website-is-static</guid>
    <pubDate>Tue, 04 May 2021 05:00:00 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>Static websites are faster and more responsive. Why we chose to go the modern old-school way for the META eight website.</description>
    <category>Tech</category>
    <category>Website</category>
    <category>Hugo</category>
    <content:encoded><![CDATA[<p><strong>I like static websites.</strong></p>
<p>Databases are my friends, too, I admit. And automation, scripting and all that - well, what kind of ERP expert would I be if they weren’t bread and butter?</p>
<p>But websites mostly don’t need to be clever.</p>
<p>Fast, clean and informative - yes.</p>
<p>So we’ve gone static here.</p>
<h6 id="what-is-a-static-website">What IS a static website?</h6>
<p>Back in the old days of the web, everything was fixed. When you called up a page in your browser, that page existed somewhere on a server, just as if you’d opened a Word document.</p>
<p>These days, mostly the page is created on the fly as you need it depending what you’ve asked for, who you are and what some system thinks you want or might be persuaded by.</p>
<p><strong>Which is a) overkill for most of us, and b) quite inefficient.</strong></p>
<p>Because it’s inefficient, in fact, the best systems go to some trouble to find out what you’re most likely to want and store it ahead of time.</p>
<p>A static website cuts out all that, and goes back to simply storing all the pages you might want.</p>
<p>The cleverness is in the system that generates it in the first place. (This website uses one called Hugo). Once it’s all out there, it’s as simple as it can be.</p>
<h6 id="it-should-be-fast-is-it">It should be fast. Is it?</h6>
<p>It would be nice to know how you find it.</p>
<p>And if there are any problems, down to spelling mistakes. Let us know.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Do your customers care who sees what they&apos;re asking about?</title>
    <link>https://www.metaeight.com/posts/selective-access-to-epicor-records</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/selective-access-to-epicor-records</guid>
    <pubDate>Sun, 02 May 2021 05:00:00 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>How to selectively filter Epicor records so confidential information isn&apos;t shown to unauthorised users.</description>
    <category>Epicor</category>
    <category>Epicor</category>
    <category>BPM</category>
    <category>Privacy</category>
    <content:encoded><![CDATA[<p><strong>What do you do if you run Epicor ERP and need to keep some things private?</strong></p>
<p>This is not something that comes up a lot, but it can. If you deal with customers who have strict secrecy requirements, then communications, enquiries, quotes and so on might need to be restricted to approved staff. You may work with NDAs (non-disclosure agreements) or have other confidentiality arrangements.</p>
<p><strong>And Epicor, since it works well on-premise, is a good ERP for the privacy-conscious.</strong></p>
<p>But while security in the ERP system is excellent, and has become better and better with successive recent releases, it’s focused on access to different parts of the system. Natively, you can’t easily allow a user to see some of one type of record but not others.</p>
<p>Which is why it’s great news that Epicor is so customisable.</p>
<p>Once there are clear rules for allowing access (which you as the business would know best) you can intervene as the records are fetched.</p>
<p>For each type of record that needs restricting, there are typically three methods on the business object that return the core data: GetByID, GetList and GetRows.</p>
<p>For most of these, across all the system, you can add a Pre-Processing method directive which adjusts the “where” clause for the requested data in the background. The “where clause” is the description the system sends to itself of the exact records needed -  for example all the open sales orders for a particular customer. If it’s adjusted according to the agreed rules, then bingo! <strong>The user sees only the records they’re allowed to see.</strong></p>
<p>It isn’t intrusive - there’s no <em>“access denied”</em> or anything - just the filtered version served up as normal.</p>
<p>And what’s particularly good about this is that it doesn’t matter where in the main interface the user is, because those methods supply the data for all of it (with a few caveats to be aware of).</p>
<p>No special versions of forms or screens, no running to catch up if something changes and there are new ways of accessing the information. It just works in the background, whatever the interface.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Who wants cookies?</title>
    <link>https://www.metaeight.com/posts/who-wants-cookies</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/who-wants-cookies</guid>
    <pubDate>Fri, 30 Apr 2021 05:00:00 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>Why META eight isn&apos;t tracking you.</description>
    <category>Tech</category>
    <category>Analytics</category>
    <category>Web</category>
    <content:encoded><![CDATA[<p>You may notice there’s no cookie pop-up or footer on this website.</p>
<p><strong>That’s because there are no cookies.</strong></p>
<p><strong>No tracking.</strong></p>
<p><strong>No analytics.</strong></p>
<p>If you want anything, you know where we are, because here you are on our website. There’s a contact form and even a phone number.</p>
<p>We aren’t going to stalk you across the web, and we won’t send you anything unless you sign up for it.</p>
<p>See you when we do.</p>
]]></content:encoded>
  </item>
  <item>
    <title>What you need to know to integrate with Epicor ERP</title>
    <link>https://www.metaeight.com/posts/epicor-integration-what-to-know</link>
    <guid isPermaLink="true">https://www.metaeight.com/posts/epicor-integration-what-to-know</guid>
    <pubDate>Tue, 27 Apr 2021 05:00:00 GMT</pubDate>
    <author>hello@metaeight.com (Daryl Hewison)</author>
    <description>If you&apos;ve been told that some software can&apos;t connect to Epicor ERP, or that it&apos;s really easy, don&apos;t believe either. The basics of integration.</description>
    <category>Epicor</category>
    <category>Integration</category>
    <category>Epicor</category>
    <category>API</category>
    <content:encoded><![CDATA[<h5 id="integration-between-epicor-erp-and-other-systems">Integration between Epicor ERP and other systems.</h5>
<p>This is a subject to be wary of, because there are a lot of people ready to tell you things that aren’t strictly true.</p>
<p><strong>Epicor ERP10 / Kinetic</strong> is great, and very flexible. But of course there are things it can’t do, and there will always be specialised services that work much better for particular things.</p>
<p>If you have something like that, and want other software to talk to your Epicor system, you may get one of two answers when you ask about connecting the two:</p>
<ol>
<li>It can’t be done, because there is no existing solution</li>
<li>It’s very easy, because Epicor provide REST API access so we can just use that</li>
</ol>
<p>The truth is somewhere between the two, usually.</p>
<p>As long as your Epicor system is reasonably current (10.2.500 onwards), integrating in both directions is quite straightforward - <em>with knowledge of Epicor.</em> For older systems, outward integration is straightforward, but complete solutions usually need Epicor’s Service Connect middleware or an equivalent.</p>
<h5 id="so-how-to-integrate-with-epicor">So how to integrate with Epicor?</h5>
<p>The key is knowing what you need Epicor to do, and how Epicor does it.</p>
<p>The APIs are quite low-level. You can’t simply, for example, send sales order data to a “create sales order” point. <strong>The Epicor system will want a sequence of calls, in the right order, with the right data each time.</strong></p>
<p>That means anything is possible, but you’ll get there faster if you have someone in your corner who knows how to work with Epicor.</p>
<p>And - warning - this applies even to “no code” or “low code” tools. They may connect to Epicor, but you’ll still need to know what to do with that connection. An integration solution doesn’t do all the work for you.</p>
<h5 id="summary">Summary?</h5>
<p>Yes, you can integrate beautifully with Epicor, or connect other software to it. It’s just a whole lot faster and smoother doing it if you’ve done it before or involve someone who has.</p>
]]></content:encoded>
  </item>
  </channel>
</rss>