Cloudy with a Chance of ERP?

The weather forecast today is cloudy with a 85% chance of ERP.  Yes, here I go again, "borrowing from a movie title", but I can't help myself - my nine-year old son loves the movie and that's the end of that. 

Should you run your business in the cloud?  You probably are already to some degree and almost daily, a new cloud solution materializes in the ether.  We are becoming more dependent on cloud-based services - banking, word processing, spreadsheets, payroll services, on-line tools and so on.  ERP is undergoing the same evolution, though it has unique challenges.  It is not a question of if, but when. 

Microsoft Dynamics NAV is rapidly evolving and users are successfully running NAV in the cloud and with the release of Dynamics 365, Microsoft is clearly stating its intentions - cloud ERP is where we're going. 

The main problem that needs to be solved is customization, though Microsoft is making great strides in this area. Customization may be a "feared" word with negative connotation, but I'm not one to mince words.  Businesses are unique and therefore customization is often necessary to support a business in running efficiently. Being able to customize the software and at the same time receive automated updates and upgrades is the end-goal. 

One school of thought states to change your business to satisfy the software.  Wrong-headed approach in my humble opinion.  Structure does not monitor function.   Function monitors structure.  In other words,  your customers and your ability to satisfy your customer's needs are paramount.  Everything else should be aligned in that direction.  

Microsoft's latest release, NAV 2017 has some compelling features, leveraging Office 365.  The In-Office 365 experience is a magical one.   Here's a scenario - a salesperson receives an email from a new contact. Without ever having to leave Outlook, a contact is created and a Sales Quote is created and emailed using NAV in Outlook. Another scenario - your accounting department receives an email requesting a copy of an invoice.  Within Outlook, with a single click, the invoice pops in view and is then sent to the customer by email.   This is a game changer in increasing efficiency.  Switching software and searching for documents takes time and this all but eliminates that time. 

Microsoft Dynamics NAV has never been so cloud-enabled with deep Office 365 integration, improved Web client and continued improvements in supporting customizations without affecting the base product.  Add to this the already excellent native phone and tablet apps for Android and iOS.

Embrace the cloud, but be smart about it. Research it and find a trusted partner who can advise you and steer you away from any pitfalls.  There are many companies providing cloud hosting services, some are poor, many are mediocre and a very, very few are stellar. This can make all the difference in the world as you want your ERP experience to be fast, reliable and efficient. A lot of things need to come together properly to make this a reality.  

 

 

Read More

Microsoft Dynamics NAV 2016 Top Ten Product Highlights

Having implemented our company internally on NAV 2016 and wrapping up a good sized NAV 2016 implementation from start to finish, we have a few opinions to share.  NAV 2016 is by far, the best version of NAV to date, as it should be.  Microsoft has put a lot of hard work into the product and it shows.   Here are our top ten product highlights: (note: some of these features may have been introduced prior to NAV 2016.)

  1. With proper hardware and configuration, NAV 2016 is snappy and responsive and is likely the fastest version-to-date. 

  2. The NAV tablet and phone apps work great and configuring screens is a snap.   

  3. End-users can configure Orders, Invoices and the like using Microsoft Word.  This works quite well and users are easily trained on how to do this.  

  4. Bank reconciliations are very easy to perform.  It is basically a matching game and nearly as fun as playing Tetris.  

  5. Security has always been a time consuming and cumbersome process to set up in the past.  Not so in NAV 2016.  Security can now be quickly and easily set up.  

  6. Company management – creating and copying companies has never been easier. 

  7. Improved integration with Excel, Word and Acrobat has markedly enhanced the user experience.  

  8. The development environment is the best-to-date.  The development environment auto-predicts while you type, assisting the developer in writing code.   It is almost as good as having the code written for you!

  9. The upgrade tools continue to impress.  The tools do an excellent job of merging customizations and converting data and run very quickly.  

  10. A huge technological leap was the addition of Events.  This allows developers to make code changes in such a way so that the impact of the customizations on upgrades is dramatically reduced. 

     

What to Avoid:

  1. Don’t recommend the use of Extensions at this time.  (Allows for non-code modifications to be loaded at run-time).  In testing, we were able to corrupt the database and had to restore from backup.  We’ve noticed a number of patches to this area in cumulative updates. 

  2. Don’t bother installing every cumulative update.  They are released monthly and is far too often to be upgrading a production system.  

 

Read More

Improving ERP Implementations - Part Two

In the last blog in this series, we covered some of the key areas in selecting the right ERP product.  In this second part, we will discuss the implementation methodology.   The first question to take up is “Why should you care what implementation methodology your ERP partner uses?  Isn’t that their business?”  After all, you may be shelling out a small fortune to have your ERP system implemented, so it should be akin to getting your car serviced or a room added onto your house.   Sit back, relax and enjoy as your ERP system is implemented for you.  

If only it were that easy.   Successfully implementing an ERP system requires tight collaboration between the customer and implementing partner and it takes a lot of hard, dedicated effort on both sides.   The relationship could be better envisioned as a partnership rather than strictly a client-vendor arrangement. 

Consider a few of the key areas where your involvement is absolutely necessary:

  • Requirements meetings
  • Ensuring your business processes and requirements are communicated effectively to your implementation partner
  • Providing data from legacy systems
  • Obtaining data from third parties (Banks, other IT systems)
  • Coordination, scheduling and management of internal project resources
  • Attending training sessions

Not only that, you already have a full-time job!   The implementation methodology used may impact not only the quality of the implementation, but your daily work-life for an extended period of time, and so should be given due consideration.  

The two major implementation methodologies in use are:

  1. Waterfall
  2. Agile

Waterfall – the project is carried out logically in a series of steps.  Once one step is completed, the next is taken up and so on.  For example:

  1. Design requirements meetings are held
  2. Design specifications are written 
  3. Design specifications are approved 
  4. Configuration
  5. Data conversion
  6. Development (customization)
  7. User Acceptance Testing  
  8. Training
  9. Final Data Conversion
  10. Go-Live

This is logical and fine and works well in smaller, simple implementations, where there is little to no customization.  It also works fine for industry-specific software systems which very closely fits your business requirements.  It is also fine for straight-forward cloud based software systems which are not customizable.  It is not the best choice for complex ERP implementations as we shall soon see. 

Agile – simply put, it is an incremental and iterative approach to product development.  Work is delivered in periodic segments of time called “sprints”.   For example, a sprint may be defined as two weeks.  At the end of the sprint, it is expected that the work is functional and complete.   From this, new feedback and understandings arise and the next sprint begins.  Thus, each sprint takes the project closer to the end goal.  The process is highly adaptable and anticipates and embraces change.  Therefore, the term “agile” is well-chosen!   Agile requires tight communication between customer and implementing partner and indeed, daily communication is one of its key benefits. 

So, we can see if we are implementing a simple ERP system with little or no customization, Agile doesn’t make sense.  Agile is for product development and we are not doing any development!   If you are implementing an industry specific auto-repair shop system, you will simply use it out-of-the box and Agile doesn’t fit at all!  A simple cloud-based payroll system -  just plug in your employee data and start using it.  Agile not required!

However, in a complex ERP implementation with customization, heavy data conversion, integration with third party systems, and so forth, development is required and Agile is ideal.  Agile is best when complex requirements are not fully known up-front.  At the outset of a project, the customer knows the least about the ERP system and the implementing partner knows the least about the customer’s business.   The likelihood of writing a complete, and correct design specification as the first action in the project is low. Agile allows team members to adapt to change, new revelations come to light and feedback is used to improve to product. 

There are several methodologies which fall under agile (Scrum, Extreme Programming, Crystal, are a few). 

Agile is best for large, complex ERP implementations.  Case closed.  Whoa there!  It may very well be, but it must be applied intelligently.   Agile was originally developed for software product development.  For example, a company creating an ERP software product.  Therefore, its processes are internal to the company developing the product and not customer facing.   An ERP implementation is customer-facing.  The communication gap between the customer and implementing partner must be bridged as the customer will very definitely be involved.  

With Agile, budget and timeline may be difficult to predict as a full design specification is not typically written up-front.  Moreover, specifications and documentation are not highly-valued items in agile.  Because change is embraced by Agile, the scope of the project may increase significantly and the budget blown.  Moreover, with Agile, work is often estimated using obscure, arbitrary values which doesn’t translate well to real-world costs.  

The bottom line is Agile must be adapted for ERP projects in an intelligent and thoughtful manner.  Reading and following a book on Agile and applying the concepts strictly to an ERP project is inviting disaster!

So, if you are going to implement ERP using an Agile implementation methodology, the following guidelines may be of use:  

  1. The implementing partner must ensure customer team members understand Agile concepts and terminology.  This is the biggest initial barrier to success.  The customer team and implementation team must understand the concepts and terminology to be used in the implementation process.  The good news is there is probably only a dozen or so common Agile terms that need to be understood.  

  2. Initial design meetings to create the initial product requirements list is highly recommended.  Work should be estimated in terms the customer can understand which easily translates to dollars.   This is likely, the good old faithful, hour.  This gives you somewhere to start and will eliminate unnecessary and excessive change downstream provided the designer is competent and has a thorough and deep understanding of the ERP system being implemented.   There is absolutely no substitute for this.  

  3. Ideally, the implementing partner has worked out all the kinks out of the Agile process and has adapted it for ERP projects.  The biggest issue you may face with Agile is scope creep – the project scope expanding over budget, so both parties must keep a constant eye on this and use reporting metrics to predict and control the budget.  

  4. Use judgement when utilizing agile principles.  Common sense and practicality override agile theory and principles.    

  5. Have fun.  Implementing ERP Projects using agile can and should be a fun and rewarding affair.  

     

 

 

Read More

Improving ERP Implemenations - Part One

ERP implementations often fall short of desired expectations.  Indeed, the past-experience of an ERP implementation can leave a permanent mental scar of those involved, so much so that a new ERP implementation becomes a rather daunting and un-confrontable affair. 

However, ERP implementations can be a positive experience from start to finish, with any minor bumps smoothed out by a strong partnership with those involved and backed with strong executive sponsorship.   But let's cut to the chase, what can be done to ensure an implementation is successful? 

Rather than attempting to address this broad topic in a single blog, we'll take this up in multiple parts.   This will be part one of a series of blogs. 

The first aspect of the ERP implementation is the software itself.   Potential customers evaluating ERP software will review several products and will do its best to select the best possible product for the company. 

The organization selling the product will naturally do its very best to sell the product.  If the selling organization conducts itself ethically, it will not sell its products to a customer in which the product does not fit well with the potential customer's business or budget. 

This is sometimes where trouble begins.  In this case, the seller pushes the wrong product on the customer and the customer accepts the product.  Although it may be possible to customize the product to fit the customer, the budget to do so is well outside the customer's reach.   Nevertheless, the product is sold and implementation attempted and fails.  Both parties lose.

One can avoid this major misstep by doing internal preparation for the demos, by selecting key personnel to represent the various departments of the company and having them determine how the software addresses their needs.  This data can then be assembled and comparisons between products can be analyzed.  Don't be swayed by salesmanship or promises, look at the data and evaluate based on the facts and the facts alone.   

Find out what the system does out of the box, what requires customization, and approximately how much those customizations would cost.   The selling organization may use terminology such as "configuration" and avoid the term "customization".   It would be best to clarify these terms with the selling organization. 

Configuration could be defined as something that can be accomplished by setting pre-built options within the software itself and requires absolutely no programming or modifying of source code.   An example would be configuring a built-in approval system to approve purchase orders based on various dollar thresholds. 

Customization could be defined as something that requires programming or source code changes to accomplish.  Typically, customization takes longer than configuration and the cost is higher, sometimes significantly so. 

In some cases, the software is not customizable at all or very difficult and expensive to, and you are expected to live with the functionality as-is.  In this case, you are forced to modify your business processes to fit the software.  This is not always possible and an important distinction and must be understood.  

Another area that is worth delving into is third party add-on software.  Be sure to clarify what functionality is standard and what is being provided by third-party vendors.  ERP products, although rich in features and scope, typically do not do everything a potential customer needs and this is where third-party developed products can fill in the gaps. 

The third-party products may be written in the native language of the ERP system itself or may be a completely standalone product interfaced with the ERP system.   What is the track record of the third-party vendor?   How many successful implementations have there been?  How do upgrades affect the third party software? Who will be implementing the third-party software? Get references on the third party vendors/products as well as the ERP system. 

Find out what implementation process the selling organization uses.  Is it waterfall or agile?  This will be covered in a future blog as this is an important topic.  But for a few quick definitions: Waterfall is a traditional approach to project management where one step in the project follows after another in sequence.  Agile is a cyclical approach to projects in which the delivery of the product occurs incrementally in predefined regular periods of time called 'sprints'. 

How is the product deployed?  Is the product installed on-premise or it is hosted in the cloud? You may not want your data exposed on the cloud or you may desire ERP hosted in the cloud.  Many ERP products offer both options and some are cloud-only.  You'll have to determine the best option for you. 

Finally, ensure you get a detailed estimate of the software and implementation.  Do not accept a general estimate which is just a range of service hours or dollar amounts.  A detailed software estimate should include no. of users, software modules, third-party modules and recurring fees.   A detailed service estimate should include design, configuration, customization, training, data conversion, user acceptance testing and support for the go live, at the very minimum. 

This is by no means a full primer on how to select ERP software, but may give you some insights and things to look out for.  

  

Read More
Microsoft Dynamics NAV Don Saito Microsoft Dynamics NAV Don Saito

NAV Reporting Writing 101 - where to get your data

When one is new to report writing in Microsoft Dynamics NAV, one may wonder what tables to pull data from.  There's a bountiful number of tables in NAV and so meandering through the list can be daunting.   Here's my shortlist of favorite tables to pull data from when reporting:

17 G/L Entry - this is the table for pulling general ledger data.  

21 Cust. Ledger Entry - this table stores invoices, credit memos, payments, etc. for customers.  It does not contain line item detail.  The aged accounts receivable report utilizes this table and several standard sales reports by customer pull from this table.  Good for pulling overall sales data by customer which could include items, G/L accounts, fixed assets and resources.  Although it contains fields for Profit, it is not reliable for profit data related to items.  See 'Item Ledger Entry' below for more details. 

25 Vendor Ledger Entry - this table is similar to the Cust. Ledger Entry, but is for vendors.  It is utilized by the aged accounts payable report and several standard purchasing reports by vendor pull from this table. 

32 Item Ledger Entry - this table stores all item related transactions (purchases, sales, adjustments, credits, etc.).  It is quite versatile as inventory, sales and purchasing reports can be written using this table.  It stores the customer/vendor no. as well, so it can be used to create sales/purchasing reports by customer/vendor.  Note that it will not contain sales and purchase transactions related to G/L accounts, resources, or fixed assets.   Therefore, if you compare sales reports that drive off the customer ledger vs. the item ledger, you will likely not get the same results.  Table 5802 Value Entry is related to the Item Ledger and is useful when more detail is needed particularly relating to costs.  

The Item Ledger is also affected by the Adjust Cost - Item Entries* process, so is the recommended table for getting the most accurate item cost and profit data vs. relying on the Profit fields in the Cust. Ledger Entry. 

Tables I do not recommend writing reports where item costs or margins are important include:

113 Sale Invoice Line, 115 Sales Cr.Memo Line, 123 Purch. Inv. Line, 125 Purch. Cr.Memo Line

This is for two reasons: 1) you have to read two tables to get the full picture (e.g. invoice and cr.memo lines)  2) More importantly, they are not updated by the Adjust Cost - Item Entries process so it will not contain the most accurate item costing data. 

Happy report writing!

*Adjust Cost - Item Entries process - this process is recommended to be run on a daily basis if you have inventory.  This MSDN link describes this process in detail.

 

Read More
Microsoft Dynamics NAV Don Saito Microsoft Dynamics NAV Don Saito

Functionality, Usability, User Experience and Software Releases

I have been recently immersed in the joys of software design and development.  Namely, I took on what seemed like a simple task - modify Microsoft Dynamics NAV to automatically post batches of sales invoices and email them.   Sounds innocent enough and NAV already has a function to post and email a single invoice, so it should be a simple task, or so I thought.  As I designed and developed the solution, I realized I have been for some time operating in a particular cycle and that cycle carried out fully will inevitably lead to superior solutions and stopping short will lead to less optimum solutions.   The cycle apparently is: 

1) Functionality
2) Usability
3) User Experience

By functionality, I am referring to completing a basic particular function.  In this case, batch posting and emailing a set of invoices.  Ok, that is simple enough.  Loop through each invoice post it and send out an email with the invoice attached.  

However, NAV by default, always reuses the last email body text when sending emails making automation of emails unusable.  So, this needed addressing.  Here, the cycle repeated again - Functionality was lacking, so new functionality had to be developed to allow customers to have their own unique email body text for each type of document (quotes, orders, invoices, etc.) 

Once the basic functionality was complete, the usability had to be addressed.  In order to make the software more usable, it is desirable to allow users to make changes to the email body text on the fly prior to sending out invoices and giving them an option to save it.  Now the modification was functional and usable. 

Now the user experience could be addressed.   How can the modification be easily used by the user?  Adding error trapping, messages and convenient buttons to access the functionality rounds out the modification and markedly improves the user experience.

We now have the ability to set up default emails by customer.  It is easy to use and intuitive.  The screens display just what the user needs and no more.  The interface is clean and aesthetic.  Now we can continue where we left off and address the usability of the batch posting and sending of invoices. 

Batch posting is now functional - emailing and sending invoices has been accomplished.  However, the user is prompted twice for each invoice.  Clicking two times for each invoice is not very usable, so this is addressed.  The user is given an option whether to review each invoice before it is emailed.  Now the user can automatically post and email all invoices in the background or review each one individually.  Usability has been achieved. 

The user experience can now be addressed.  Adding buttons to post batch and send are added to the sales invoice list and sales invoice page.  Error trapping and messages are added.  The modification is now functional, usable and the user experience is excellent.  

You can probably think of a dozen products, software or otherwise, which are merely functional.  Take a garden variety computer mouse.  It points and clicks, but tracks roughly on reflective surfaces.  It has earned the status of functional.   But functional is merely okay.   Design into the mouse, smooth tracking across a great variety of surfaces and a satisfying click and now we have something more usable.  Design into the mouse comfortable ergonomics, an aesthetic modern profile and now we have addressed the user experience.  

The cycle of functionality, usability and user experience can and should be addressed during design.  However, there is no escaping the fact that part of cycle will be iterative regardless of how much forethought is put into design.  This is because one cannot always predict the outcome until it is actually seen and experienced.  

Now back to the world of software.  Far too often, I see software or functionality released which is merely functional as an effort to "get it out there".  In my opinion, this is shortsighted.   Greatness does not often result from "getting it out there".  It comes from completing the cycle of functionality, usability and user experience.  Regardless of methodology - waterfall, agile, etc., taking each and every function or product through the cycle to a shining, brilliant full user-experience is a standard well worth achieving. 

 

 

 

Read More

Microsoft Dynamics NAV Design Evolution

Designing and developing a Professional Services vertical for Microsoft Dynamics NAV has been an experience.  There were days of joy when a function worked just right and there were days of frustration when a piece of code simply refused to behave, but I soon came to realize that each day was simply another evolution.  The product was evolving day-by-day, steered by obsession over quality, user-friendliness and efficiency.   Because I was using the product to run my business, I became intimately aware of the user as I was the user and that has to be the prime element of sound software design - one has to put oneself in the shoes of the user while designing and developing. 

There is much to be improved and simplified in Microsoft Dynamics NAV from a user's point of view in order to bring about the goals of efficiency, ease-of-use and user-friendliness.   In no particular order, here are my thoughts on design evolution as it relates to Microsoft Dynamics NAV, though many of these points apply to software design in general and can be applied at any time through thoughtful design and development. 

1.  Automate activities that burden the user when there is really no reason to involve the user:

  • Posting Warehouse Item Journal should also update Item Ledger rather than having user run a separate Item Journal, Calculating and Posting.  
  • When time sheets are posted, automatically integrate to the job ledger rather than having user a run a separate Job Journal, Suggest Lines function. 
  • Automate inter-company posting so that users do not have to monkey with inboxes and outboxes.  

2. Greatly reduce the chance of data errors or omissions, by enforcing mandatory fields during master record set up (e.g. customers, vendors, items, pricing, etc.).  The mandatory fields should be configurable by an admin not a developer!

3.  Always give the user a message indicating if a process was successful, failed or was aborted.  This should be a commandment!

4.  Make warning and error messages user friendly in plain terms with suggested corrective actions where possible.  I would like to see the message 'The update has been interrupted to respect the warning" permanently stricken from the database and replaced with a simple, "Operation aborted". 

5.  Hide, by default, all fields that are not likely to be used by the intended audience.   Let's take the North American database for instance.   The General Journal should be simple, but it is not!   Hide the Gen. Posting Type, Gen. Bus and Gen. Prod. Posting Groups!  Show the Debit and Credit Amount fields.   Extra fields = Extra Clutter = Not User Friendly = Not efficient. 

6. The opposite to 5 is just as important.  Show, by default, all fields that are likely to be used by the intended audience.   The Time Sheet approval screens are an extreme example of this.  Out of the box, they are essentially useless if you are using resource numbers or job numbers.   You cannot see the names of the resources or the names of the jobs that you are approving time for.   Many default screens simply do not show, by default, necessary data that is needed by the end user.  This sometimes requires developers to get involved, increases cost of the implementation and reduces efficiency.  

7. Eliminate multiple tree selections.  E.g. clicking Order, Drop Shipments, Purchase Order on the Sales Order is time consuming and cumbersome.  Selections should be a one-button press or at most a two-level tree.   

8. Make setting up master records easier.  Setting up Customers and Vendors require users to select Posting Groups.  Take the concept from the Item Card Category Code which defaults Posting Groups and other key fields and pay it forward!

9. Obsessively reduce keystrokes and clicks.  My mantra is "Three clicks is painful, two is sufferable, one is good and zero is best!" 

10. Make the interface intuitive, easy-to-use and fun!   Fun and ERP software may be polar opposites, but it does not have to be that way!

11. This brings me to the long and short of it- you have to know your audience to design software for your audience.   For example, I have not yet met an accountant who wants to see anything but the Vendor Name in the description in the General Ledger for payments to vendors, yet the NA version of NAV still to this day, uses a description that is of no use to accountants. 

 

 

Read More
Microsoft Dynamics NAV Don Saito Microsoft Dynamics NAV Don Saito

Introducing Professional Services Powertrain for Microsoft Dynamics NAV

ERP Efficiency Experts is proud to announce the release of our Professional Services Powertrain module for Microsoft Dynamics NAV!  This landmark release fulfills a strong need in the professional services space.   We not only leveraged the core functionality of one of the most powerful ERP systems available- we have literally transformed the product so it works seamlessly, effortlessly and powerfully for the professional service industry.  And that is just the beginning.  When designing the solution, we had several key concepts in mind:

Efficiency - the product is designed to enable users to increase their efficiency.   Time entry is a simple intuitive affair.  Approving time and invoicing and is a snap.  The workflow has been meticulously streamlined and automated where possible.  We are after all the "ERP Efficiency Experts" and our product lives up to our name!  

Ease-of-use - we have simplified the user-interface so the product is intuitive and actually fun to use.  The user is only presented data that is relevant to that users role.  Correcting mistakes, such as crediting a project related invoice is no longer a chore. 

Inexpensive - Relatively speaking, ERP implementations can be quite costly and often costs much more than anticipated.  Our solution is orders of magnitudes less costly than traditional ERP implementations.  This is because our product is pre-configured for the Professional Services industry.  You can literally start plugging in your data and with a little training be on your way! 

Contact us today to arrange a demo! 888-512-3195

Click to Download Brochure

 

 

 

Read More
Microsoft Dynamics NAV Don Saito Microsoft Dynamics NAV Don Saito

ERP User Documentation, a Compulsion

I admit it- I have a compulsion and that compulsion is to document procedures and customizations.  I realize I am a prime candidate for the twelve step program, "Documentation Anonymous".  In fact, I refuse to deliver any development without user documentation describing where to find and how to execute any particular development, along with testing tips, and other juicy tidbits.   Worse, I have passed this disorder down the organization to others.  

How this disorder befell me is an interesting story.   You see, I just got tired of training the same procedure or task to one person after another and then again after someone forgot.  This is no fault of any other persons as human memory in its current state is not perfect.   It was my responsibility because I didn't document it.  And I found, magically, the amount of traffic regarding said procedure or task died down to a mild murmur, and eventually to a wonderful blissful silence.  

When procedures, tasks and details are held in minds of others and not in writing, it is subject to degradation, loss, alteration and other forms of unfortunate circumstance.  Employee transfers, promotions, leaves, new hires, etc. are just a few of the possibilities.  As these procedures and tasks are handed off from one person to another, data inevitably gets altered or bits of data gets dropped off and knowledge is then lost.  "Tribal knowledge" can be converted to "Permanent knowledge" by documenting procedures, tasks and customizations.

 I may have struck a serious blow to the financial interests of "Documentation Anonymous" and if so, the world will be a better place!

 

 

 

Read More