Choosing a Made2Manage Consultant

The Bobs

The Bobs – Office Space

As I mentioned in my first post I’ve been working as a Made2Manage Administrator for more than 10 years. However, even if you’ve been one of my regular readers, you may not be aware that I’ve also been an independent consultant for the last several years as well. Over the years I have worked with several Made2Manage employed consultants as well as independents.

Occasionally I get emails from clients asking me what to look for when hiring a consultant, so I’ve decided to discuss it here to help those of you who are facing what might be a daunting task. Below are some questions and issues you should address with possible candidates.

  1. Is the prospective consultant professional in his communication and manner? Computer geeks are notorious for lacking communication skills. You should be very aware of how your consultant communicates as the lack of these skills may hinder your projects. Communication skills are every bit as important as technical skills and harder to learn as well. The hilarious SNL skit, Nick Burns Your Company’s Computer Guy, illustrates how true this is.

    Nick Burns


  2. Is the prospect experienced? Do they have an impressive skill set? How well does that skill set fit your consulting requirements? Beware of hiring someone who specializes in only a couple of Made2Manage technologies as they will attempt to address your issues with that limited skill set. This can result in less than optimal solutions as they try to fill a round hole with a square peg. If your project requires coding and report customization, be sure to hire someone with VFP, SQL, VBA, and possibly FastForms experience. Additionally, if you’ve purchased an optional module such as M2M Advanced Reporting, you would want someone experienced with it as well.
  3. How quickly does the prospect return calls? Most consultants are not available 24/7 but the good consultants return calls within one day.
  4. Is your prospective consultant realistic in how he assesses your project? No consultant is perfect and I would warn you against anyone who promises the moon, or who seems too good to be true.
  5. What are the prospect’s rates, completion policies, and guarantees of work? Rates are not as important as a consultant’s policies on what is billable and what isn’t. For example, if quoted 4 hours of labor for a report customization, is that an estimate or is the cost not to exceed that amount? Upon delivery of code, are you billed additional hours for corrections required after testing on your system? Most of the consultants, as well as Made2Manage itself, bill for everything, including the time required to remove bugs from their code.
  6. Additionally, does this prospect offer free help such as with a blog or in the online forums? Can you call the consultant and ask a few quick questions without incurring consulting charges? Again, often the answer is no, and you will be charged in 15 minute increments.
  7. Does this prospect have examples of their work to show you prior to being retained by your firm? What have they actually done?
  8. Is the consultant willing to train your staff to perform some of these tasks in the future?

What questions/issues do you feel should be addressed with a prospective Made2Manage consultant?

Data Utilities – Convenience or Crutch?

Recently I’ve been assisting a company with discrepancies in inventory master and inventory on hand tables. One problem is negative quantities in their inspection which can’t be removed, and they also have problems with inconsistencies in their on hand quantities of various parts.

So, a user brings the Material Availability (RPMAVL) and the Inventory Evaluation (RPIVAL) Reports to me and we compare them with a search from the On Hand By Location (INVOH) Screen. None of them show consistent data.

I explained to the user that M2M has data utilities, which are the first step in troubleshooting these kinds of issues. They are found under Utilities, Maintenance, and Data Utilities.

Data Utilities

I’m sure many of you have used them, and I’d bet that everyone has had to run “Ship Fix” at one time or another. We take these steps for granted when we need to fix issues. However, this user asked, “Why doesn’t M2M just fix these issues so that we don’t have to run these utilities?” This set the hamster wheel in my head moving, and I thought I would share those thoughts with you.

Why are utilities necessary?

Well,the most obvious answer is that utilities compensate for bugs in the Made2Manage software. These bugs can be in the software directly, or they could simply be a case where the software is not protecting the user from making a mistake. For example, Made2Manage will allow you to receive obsolete parts or even part revisions that are not in the item master to begin with. There may be valid reasons for this, but most often these are mistakes that need to be corrected. When the user attempts to do so, they can cause problems like I described above. In my opinion, regardless of the cause of the error (M2M or User Error), the problem lies with M2M.

All of these problems can of course be fixed without the use of a Data Utility by directly manipulating the SQL database, which is exactly what these utilities do. Data Utilities offer a more convenient way for users to fix these issues rather than copying and pasting SQL scripts into Query Analyzer. Also, consistency is more certain when data utilities are used rather than scripts provided by support.

Why don’t they just fix M2M so the utilities are unnecessary?

  1. M2M is a complex system and it’s simply easier and less expensive to fix occasional data inconsistencies than to properly diagnose problems with the code or user behaviors which are problematic.
  2. These problems tend to be infrequent and are therefore difficult to catch. The issue is similar to intermittent problems with your car. Your car never makes the noise in front of the mechanic.
  3. Customers would be inconvenienced by the troubleshooting process. In all fairness, M2M can only do so much testing of their product. They cannot afford to employ a testing team the size of a typical M2M customer company to enter data for years on end in the hopes of finding these problems themselves. They would request volunteers from a group of customers which receive this error a lot and ask them to troubleshoot this problem using SQL Profiler or a similar tool. This could hamper database performance and many customers aren’t willing to endure the inconvenience.

For those reasons, I can understand why M2M uses the data utilities.

However, what excuse can be made when even the data utilities are buggy as well?

M2M Releases Version 5.6 SP3…. umm..6 weeks ago.

Let me preface this by saying that very few M2M Admins are more active than myself. I am on M2M Expert nearly every day. I found out that SP3 was released through the Los Angeles Area Made2Manage User Group on Google Groups.

Am I the only one who didn’t know SP3 was released? It wasn’t posted in the “Latest News” section, nor was there an e-mail informing admins about its release. It wasn’t posted in their own users forum either. I know it was posted in the “Latest Downloads” section, but who really checks there?

I get plenty of e-mails from M2M regarding their latest add on modules in an attempt to increase sales. How about informing us of something important via the same method?

I know that people from M2M read this blog, what do you guys think? Would you like M2M to e-mail you when they release these service packs?

Answers are Easy, the Questions are Hard.

In the past year I’ve been doing a lot of T-SQL (Transact-SQL) programming. My current employer has required a great deal of it, and I have searched out several people and places on the internet to gain this knowledge.

However, as I’ve progressed on this journey I’ve noticed a curious thing. The typical situation begins when I run into a problem with some code I’m writing. I’ll google the issue or function I am struggling with. If you regularly ask questions in some internet forums without first searching for the answer yourself, the regulars will become annoyed and ignore you.

If the google search is fruitless, I will post a question to a forum such as SQL Team. However, it doesn’t take long to learn that you must be exceedingly detailed with your question or the experts will not bother to answer. This attention to detail is simply common courtesy as these experts are providing free help, and why should they waste their time to ask you a multitude of questions about your question.

The pattern I’m noticing is this: In forming my detailed question I am forced to step back from the problem and examine it, and in doing so I often answer my own question. Simply taking the time to properly form my question, answers it. When I mentioned that on the SQL Team forum, I got similar responses from the other members. In fact, a couple of them said that their employers had a policy that you first had to pose your question to an inanimate object (such as a human cardboard cutout or a teddy bear) before you could ask a senior programmer.

Have any of you found that answer your own questions by simply forming them?

Incidentally, my cardboard cutout would probably be something like this.


Please Santa, Can I Have an Error Log in a SQL Table for Christmas.

Christmas Story

A Christmas Story

At the time of this writing, the M2M error log is still being kept in a text file, not surprisingly called error.log. I understand that this is probably the most expedient way for M2M to capture it. I suspect it’s a lot easier code-wise to simply append to a text file rather than create a database structure and use SQL to insert error records into it.

Additionally, if your SQL Server goes offline then SQL error logging would of course do the same. However, I also suspect that if your SQL Server goes down, the error.log file won’t have much in the way of relevant data anyway.

Why do I care which format this file is in? For the most part, I want this change for the reporting possibilities. I can theoretically write reports on the text file using Crystal, but if the format was an SQL table, the reporting possibilities are limitless. Off the top of my head, the following are some of the reports I’d like to create.

  1. Wouldn’t you like to know how many errors you are logging each week and to be notified if they sharply increased?
  2. Wouldn’t you like to be immediately notified of certain errors? We all know that M2M throws many superfluous errors, but I would like to be notified via e-mail of those which are critical.
  3. I would like to see which users are generating the most errors and of what kind, so I can suggest better ways for them to use M2M or to suggest they pursue online training.
  4. I would like to use T-SQL to remove the cascading errors from the log before looking at it. Cascading errors are those errors which are simply a result of the first error and they can most often be ignored. In my opinion, they needlessly clutter the log.

These are just a few of the things I’d like to do with this information. There is a change request for this issue, number 11346, which covers this issue but it has been in “Awaiting Approval” status for over 4 years.

I urge my readers, both of you :), to add your companies to this change request to motivate M2M to implement this change.

It's Beginning to Look a lot Like Christmas

Christmas Lights

I’ve always loved Christmas Lights, but some people go overboard.

M2M can’t be decorated like that, but you can add a touch of holiday spirit. Follow the directions below and you can have your active cell indicator switch daily from green to red, the colors of Christmas.



Want to try it? Simply follow these steps:

  1. Download this Zip file and unzip it. Essentially the colors.prg will change the color of the active control on M2M screens for every user. It flips them back and forth between red and green if run in the month of December. If run in any other month, it changes the color back to the default yellow.
  2. You should try any code first on your test server. Now is a good time for the disclaimer:

    Important: All information on this site is provided “as is” for informational purposes only.
    In particular, all code samples are provided “as is” without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.

    If you should decide to use any of the code from this site, make sure you test it thoroughly on a test company (or better yet a test server) before you ever use it on your live data.

  3. Copy the Visual FoxPro program files colors.prg and colors.FXP to your report program file directory. For example, mine is L:\M2MData\Reports\Prgs.
  4. Next we have to create a “blank” report in Made2Manage. Open the RPMAKE screen, the simplest way to do so is to click Transfer and quickly type RPMAKE and then enter.
  5. Click Add, enter a report ID such as “Colors” and a description such as “Holiday Colors.”
  6. Add a “Default Data Source” by clicking Browse and navigating to colors.prg and then save the report.
  7. Color Screen

  8. Click on the Selections tab and click Add. Enter anything at all for selection name such as “Trash”. M2M reports will not run without a selection, but it doesn’t need to be valid.
  9. Color Screen

  10. As a test, open the report you created by clicking Transfer and then COLORS and run the report. Since the report isn’t printable, you will get the following screen.
  11. Color Screen

  12. Click OK to close, exit Made2Manage, and log back in to re-set your settings.
  13. Open any form you normally would such as the Sales Order (SO) screen and click modify. The background of the control will now be light red. If you run the report and re-start M2M again, your highlighted control will be green.
  14. How can you make the colors automatically switch every day for the month of December? Follow the instructions found in my Command Scheduler article to run this report each night.
  15. When adding to Command Scheduler do not forget to set the frequency to “Daily.”
  16. Color Screen

Besides being fun and festive for the holiday season, this type of customization can have a practical use as well. For example, one of the companies I work with doesn’t use calendar months but instead uses a system they call Red Fridays. The Red Fridays are determined before the year begins and each month ends with one. These can be found on the Accounting Years screen (AYRS). Anyway, I’ll adapt the code to change the background color to red on the last day of the period by querying the GLRULE table, and default it to yellow for the rest of the month.

Incidentally, if you decide you want to change your users default color back to yellow, simply substitute the yellow.prg and yellow.fxp files (after copying them to your report prgs folder) in your Holiday Colors report and run it. This will return everyone back to normal.

A big thank you goes to Ray at NightScaping for his help with the VFP code.

So, what do you folks think?

Well, We’re Movin’ on Up. M2M Migration

The Jeffersons

Movin’ on Up.

In a previous post, I indicated that I would post my migration procedures. Made2Manage offers instructions to set up a test server and basic migration directions, but they don’t offer recommendations of what exactly should be tested during migrations. This is unfortunate, because only they know where the issues are likely to be.

Should I pay for migration assistance?

I’ve performed migrations both ways. The only time I contracted with M2M for migration was my jump from Version 3.6 to 5.51. Migrating from Visual FoxPro to SQL is not something to be taken lightly. If you are in that situation, I would recommend getting assistance with it.

If you are migrating from any 5.XX version, it all comes down to the extent your M2M is customized, and budgetary concerns. If you administer a completely standard Made2Manage instance, then theoretically you could skip the testing process I am about to recommend. In that case having an experienced Made2Manage or third party consultant on-site during migration is beneficial. If something goes wrong during migration, then you have an expert on site with immediate access to all of Made2Manage’s resources. At the Vegas conference, Made2Manage distributed a document advertising an Upgrade and Upsize Service to version 6.0. To give you an idea of cost, they advertised a cost of $6200 for those already on any 5.X version and $11,700 for those on a prior version. These prices do not include weekends, holidays, or travel expenses. Also, the services don’t cover customization migration or the migration of customized reports.

If you have customizations, then the migration consultants will be of considerably less help if something goes awry. In my experience, most of them are not trained to customize Made2Manage. If you have customizations, ideally you should have the programmer participate in the migration process or someone who can substitute for them.

Therefore, if you have customizations and a reasonably competent administrator, you should do the migration and testing yourself. Migration is a great opportunity to learn more about M2M and how your business uses it. The process I use encourages the administrator to communicate with his users about any problems they have with M2M.

Migration Procedure

  1. Go to M2MExpert and get a copy of the CUSTRP Report This report will determine which reports have been customized and in what way, as well as any new custom reports you may have. After you run this report, use Visual FoxPro to check your UTRPSESS table as the sessionid field records the last time each M2M report was run. This includes any custom reports. Use this information to discuss with your employees which customized items they no longer need. I’m a big proponent of deleting things you don’t use anymore, but make sure you keep a permanent back up because users often change their minds. After this process you know which custom report items you need to test after migration.
  2. Assess your customized code. Are you using FastForms, Interactive Form Editor (IFE), VBA, or 3rd party reporting programs like Crystal Reports? If so, are you sure what that customized code actually does? Often documentation is an afterthought and if the customizations are old enough, the customized functions are mistaken for normal M2M function. Take time to investigate your customizations so there are no nasty surprises during testing. Also, you must thoroughly test your custom functionality as it is much more likely to break than standard M2M code.
  3. Set up a test server with an exact copy of your live data and all of associated folders. Keep the database back up files so you have a constant restore point as you will be migrating the data more than once.
  4. Before you migrate, run and print the following reports with the default settings: Sales Order Backlog (RPBKLG), Inventory Evaluation (RPIVAL), Work in Process (RPWIP), General Ledger Trial Balance (RPGLTB), AR Aging/Status (RPARAG), and the AP Aging/Status (RPAPAG). If any of the reports generates an excessive number of pages, print the last 5 pages of the report.
  5. Perform the migration according to the instructions. Assuming you were successful, apply any applicable service packs. You may also need to upgrade any of your optional modules as well.
  6. Make a SQL back up of your migrated data, taking care not to over-write your pre-migrated back up. You may need to restore to that point when doing user testing.
  7. Re-run the reports listed above and make sure that they match the pre-migrated data. If so, you have proven data integrity and you can move on to the next step. If not, you’ll need to investigate the cause of the differences.
  8. Open M2M and do some preliminary checking for correct functionality. Create a sales order, shipper, and invoice to check functionality. Make sure to check areas in which you have customizations.
  9. If you have customizations which actually write to the database, you need two test machines or you can use a test company (with identical data) on your live server for comparison. If your custom code is writing to your database, you not only have to do the first data integrity test I mentioned above, but you also have to perform the exact same actions on both instances, and then integrity test them again. You add, modify, and delete the same records to both to ensure that the end results are the same. Only through this extensive testing can you be sure that your customizations will successfully migrate.
  10. Now you’re ready for user testing. Recruit a person from each department with instructions to perform at least one example of every procedure they perform in Made2Manage. Typically, I create a spreadsheet with a separate page for each department to document each test, the result, and a description of the fix required if there was a problem. I sit with each person while they’re testing and fill out their spreadsheet for them so they can focus on testing.
  11. Obviously the next step is to address any problems with the migration. This includes data integrity, customization behavior, as well as training issues for your users. Often your users will require some training due to additional functionality provided by the migration, and now is the time to address that.
  12. After you’ve addressed any issues, the next step is to perform the migration again. This time document every step, creating a checklist to follow during the real migration. You do not want to find yourself working through a problem at 3am Saturday morning. This is not the time for improvisation.

Now, you may be asking yourself, “Does David really follow all these steps that thoroughly?” The answer, dear reader, is yes I do. In fact, in preparation for the last migration I performed, which was from 5.51 to 5.6, I migrated the data 5 times. It was necessary because we were migrating from IFE customizations to VBA/FastForms customizations and there were many issues to deal with.

So, let’s assume this whole process was successful and your company is successfully operating on the new version of Made2Manage. You’re finished, right? Not as far as I’m concerned, you still have to address what I think of as the “Hook” effect.


Imagining things makes them so.

If you haven’t seen “Hook,” or don’t remember the scene, Peter (Robin Williams) is starving having trained and exercised all day. The kids bring him dinner but all the bowls are empty. Essentially, if they use their imagination the food appears and everything is wonderful. What does this have to do with Made2Manage? Well, I can’t tell you how many times over the years that I’ve had users complain post migration that the new version of M2M either does or doesn’t do something that the previous version did. They will swear up and down that they’re right. In the real world however, believing something does not make it so.

The only way to settle these claims is to have a test machine available which is still running the previous version of M2M. I typically keep this machine available for a few months after a migration for this purpose.

I’m sure many of you have been involved in M2M migrations, how did you do it?

Inquiring Minds Want to Know About your use of FastForms

I’m trying to determine which M2M topics you folks want to read about. We can all use VBA, but since FastForms is an optional module less people may be interested in reading about it.

Please specify your level of interest in M2M FastForms.

View Results

Loading ... Loading ...

Some Quick Topics

Here are some things I thought were interesting this week:

A Few Good DBA’s This is a humorous take on Jack Nicholson’s rant in “A Few Good Men.” I’ll include an excerpt below as the site requires free registration to view the article and I know many of you won’t bother.

Manager: I want the truth!

DBA: You can’t handle the truth! Son, we live in a world that has SQL Servers. And those SQL Servers have to be guarded by SQL DBA’s. Who’s gonna do it? You? You? I have a greater responsibility than you can possibly fathom.

You have that luxury. You have the luxury of not knowing what I know:

And my existence, while grotesque and incomprehensible to you, it protects SQL Servers…You don’t want the truth. Because deep down, in places you don’t talk about at parties, you want me protecting that SQL Server. You need me on that SQL Server.

We use words like honor, T-Sql code and loyalty…we use these words as the backbone to a life spent defending something. You use ’em as a punchline. I have neither the time nor the inclination to explain myself to a man who rises and sleeps under the blanket of the very protection I provide, then questions the manner in which I provide it!

I’d rather you just said thank you and went on your way.

Otherwise, I suggest you pick up an understanding of SQL Server and start writing some code. Either way, I don’t give a damn what you think you’re entitled to!

Second, I came across this Microsoft Site with free SQL videos. They about using SQL Server Express 2005, but that hardly makes a difference. There’s a ton of good, basic SQL information to be had.

Finally, I received a call from a user last week stating that they could not run the Invoiced Sales Report that I mentioned in my last post. The user received the following error:

Date Outside Error

This of course relates to my previous post about the improper use of error messages. For the most part, users don’t read them, and they serve to do nothing more than impede productivity. This one is no different.

I told the user that he should simply hit OK, and run the report again. The second time, the report ran without incident. Now I can understand why the error is triggered, which is most likely to conserve resources and prevent the user from starting an extremely long, unstoppable, and useless report if the wrong dates are accidentally keyed in. However, shouldn’t the error say something like “Are you Sure?” and then run the report if the user answers yes?

By Your Command... Scheduler

I got an email from someone regarding this post regarding my preference for Crystal Reports. The question is, “What is Command Scheduler and what is wrong with it?”

First, in this blog I try to emphasize the importance of two way communication. If you don’t understand something, or you think I’m crazy, please post a comment and tell me so. Nobody knows everything about M2M, SQL, or anything else for that matter, so put on the white belt and ask.


Every time I read about Command Scheduler, I think of Battlestar Galactica

What is Command Scheduler?

Command Scheduler, and it’s robotic twin Command Processor, automate various processes in Made2Manage. You can schedule reports, custom programs, queue refreshing, and even re-indexing using these tools. This is especially important for those still using Visual FoxPro as you can re-index your tables every night when nobody is using the system.

Command Scheduler

Command Scheduler

The interface is not very user friendly so Made2Manage offers a class on its use. To demonstrate the flaws with this module, I’ll set up a report to run once a week with it. Suppose your accountant wants the Invoice Sales Report (RPIVSL) automatically run every week and printed to a network printer.

Invoice Sales Report

Invoice Sales Report

I highlighted the Run Later button because advanced users click that to schedule their reports. This triggers the scheduling screen, and the screen shot below is set to run Sunday evening at 10pm and repeat each week at the same time.


Seems pretty easy, right?

What’s the catch?

  1. The Command Processor requires a dedicated license in M2M, unlike the UPS Automation Program, and since licenses cost around $5,000 each, it’s an expensive little task manager. In addition, normally users can open a second copy of M2M on the same machine, though this will tie up two licenses. However, if you try to open up a new M2M instance on the computer which is running Command Processor, it simply opens a second Command Processor. Therefore, a computer dedicated to that role will be required.
  2. The Command Scheduler has limited interval choices and the shortest is once per day. If you are regenerating a que, you may need it to occur more frequently.
  3. Dated reports do not work properly. (see below)

So, you come in Monday and if you set everything correctly, your Invoiced Sales Report for the week ending 11/23/2008 will be waiting for you. Everything seems to be working fine until your accountant checks the printout next week and discovers that it is also the Invoiced Sales Report for week ending 11/23/2008. In fact, if left unchanged the Command Processor could run for the next 10 years, and will ALWAYS output the exact same data out of it. Why anyone would want the same 10 year old sales data exported every week is beyond me, but it made sense to the engineer who wrote this code.

There is a change request for this and it is slated to be fixed in Version 6.1, but nobody knows when that might be released. Notice that the change request is now almost 7 years old and is listed as an “enhancement.”

Now in all fairness, a skilled admin can compensate for this limitation by changing the advanced filter to run for a calculated date range. However, I gave up this route years ago and went with Crystal Reports which makes this whole process so much easier.

Page 29 of 33« First...1020...2728293031...Last »