We recently implemented an Enterprise Resource Management System (ERP) at our firm. The program we selected is NetSuite, which is one of the top cloud-based ERPs available. It has been a 180-degree improvement.
As a real estate development firm, our accounting process and workflow is fully integrated, from inventory purchase to the sale/lease of residential or office units. NetSuite also has tools that organize and catalog our various databases. For more on NetSuite, please refer to my posts: NetSuite: How to Select the Best ERP, and What Happened During Our Year Implementing NetSuite.
Some systems, like NetSuite, come with tools and platforms that allow businesses to modify the system itself to adapt it to a company’s needs more closely. The ability to customize is an additional benefit of transitioning to more advanced systems. NetSuite, for example, has a platform called SuiteScript that allows companies and developers to add to and modify it. Once we implemented NetSuite and were able to manage all of our principal transactions through it, we decided to develop enhancements to automate further and eliminate errors in our operations.
We selected the areas that were most important to us and would have the highest impact on our time. We chose three main enhancements to begin with: real-time updates of the availability of our for-sale inventory, producing contracts for sale or lease directly from the system, and recurrent invoicing. We also hired two NetSuite experts through Upwork to help us program them (please see my blog post on Upwork: Find the Best Freelance Help for Your Business and 5 Benefits of Hiring Freelancers to Help You Out). We provided the blueprint and strategy goals, and they programmed the developments.
Because it kept producing errors, the first enhancement we worked on was sales inventory availability. Our nature as a real estate company is different from, say, a commercial company, so we had to store our portfolio inventory in a database that is separate from the sales module in NetSuite. Therefore, we would sell or lease a unit but would have to update our inventory availability manually. We needed a solution that would update our sales transaction and our portfolio availability simultaneously.
We programmed workflows that tie both modules together:
When we enter the item number (e.g., an apartment’s number), the item’s description (housed in the inventory module) automatically fills in the sales module.
When an opportunity closes (i.e., we complete a sale), the item in the inventory module automatically updates as unavailable.
When a lease expires, and the sales transaction is updated as finalized, the inventory item automatically changes to available.
This enhancement in availability has sped up our sales process and significantly reduced mistakes. We have been analyzing the process progress for a few months now, and initially, it had a couple of errors, but we have since corrected them, and this enhancement is now working very well.
We sign contracts within our firm for the apartments, offices, and retail commercial spaces we sell and lease, and our goal with the new system was to have the ability to generate these contracts directly through the software. We decided this was one of our priorities because the legal documents we produce must be perfect. At the same time, the contracts can vary widely between each other depending on the details, so there is some probability of error each time a sales contract is printed.
We researched different products available on the market for signing and producing documents, but we didn’t find any that provided the flexibility we needed. At Celaque, our company, we have three underlying contracts depending on the type of property, but for each contract, different clauses apply based on the transaction (i.e., sale or lease) as well as the negotiation. Furthermore, we wanted to connect the transaction’s information that was already in the system with the contract itself, so our best option was to develop an enhancement in NetSuite.
Through trial and error, we settled on the best workflow to produce the document. First, the sales representative inputs all the information on the client’s screen, which summarizes the sales/lease transaction). There is a separate subsection in the main screen that allows the sales representative to select from the clauses that are available for the contract. Then, after clicking on a button for preparing a PDF, the contract pulls information from the main company file and adds in the clauses we chose depending on the transaction.
This development has taken a few months due to the many types of transactions we manage, and this is also partly because we have iterated the process to make it as smooth and straightforward as possible. We played with the different functions and checked those to ensure the programming was impeccable. We are now working with the new feature, and for the first few months, we will review every contract to make sure we did not miss a variation (see my blog post on levels of review: Get the Best Result Every Time with Multiple Levels of Review). Nevertheless, we are now able to produce 100% accurate contracts that can be created in less than five minutes and require much less time revising.
Our next priority was to produce recurrent invoices for the portfolio of properties we manage. Each month, we have to prepare dozens of invoices for each of our customers. Although we had automated the process with templates and Excel sheets with formulas, we wanted a solution that would automatically generate the invoices on the 25th of each month by pulling all the information from the client’s screen. Creating this process was easier said than done because we realized that we needed to program the following variations (among others) into our invoices:
Lease rate: This is the main item we are billing. The prices are different depending on the type of unit and its size.
Late fees: If a payment is past due, late fees accrue.
Taxes: Tax regulation varies by type of asset.
Maintenance fees: We charge maintenance fees on some assets and on others we do not.
The bills needed to be coded using SuiteScript, and we have now gotten through our first billing cycle. There were inevitable errors, mostly with the late fees, but we are working on reducing those in the next billing cycle. Our goal is to produce fewer errors each time until we have zero. It used to take two people one full day to bill. The goal is to eventually complete the billing process in just a couple of hours.
The Future Holds More… Enhancements
We had no prior programming abilities when we first implemented NetSuite. Nonetheless, anything is possible nowadays, especially with the availability of experts on platforms such as Upwork. The enhancements have taken longer than we had initially expected, but they are worth the investment. The key for us was choosing a system that would grow with us as we evolve. For now, we do not have any other significant enhancements for NetSuite planned, but I am sure the future will bring more positive change.