Sunday, December 27, 2015

The Differences in Insurance Between Procore and Sage 300



Insurance is Crucial

As an individual, keeping your insurance policies up to date may not seem like a big deal.  For most of us, the biggest hassle is re-signing up for our existing health plan every year, and remembering to print out a new auto insurance card and put it in the glove box.

But if you're running a construction company, maintaining insurance is not so simple, yet it is critical to your bottom line.  As a general contractor, you are responsible for all of the subcontractors working for you on site.  So it's not just your policies which must be up to date, but everyone working for you must have current valid policies as well.







AP Controls Protect You

Fortunately, Sage 300 has built-in handling of insurance compliance.   If you try to pay a commitment which is out of compliance, you will be warned or outright prevented from doing so, depending on your AP vendor configuration.




This is fundamentally important.  You cannot have a subcontractor working on your job who does not have current insurance and proof thereof.   If, for example, they drive a truck into a ditch and they are not covered, you are financially responsible.  And that could make the difference between a profitable job and a loss.

If you're only using Sage to manage insurance, this is not a big deal. But many companies are now using Procore for project controls and management, entering commitments insurance information in that system, not directly in Sage.  So now there is a dilemma- which system should control insurance? And if you want accurate information in both, do you just double up your work?



Insurance in Procore

The key is to make sure that the insurance in both systems is up to date without needing to enter it twice.  But the two systems do not treat insurance identically.  Let's see what that means.

In Procore, insurance is managed at the Company level.  For the sake of simplicity we are going to refer to these Companies as Vendors, knowing that we mean "Companies which are used for Accounts Payable and which are linked to Sage AP Vendors". 

A Procore vendor has insurance policies.  You can create new policies at the global level, and you can also create insurance policies for specific projects.  For example, if you have a project in Turks and Caicos, and your US policy does not cover you.  Or, more practically, if you have projects in different states where policy requirements differ.





In Procore there are not many restrictions on Insurance policies.  You can have more than one policy with the exact same type.  And right now, commitment and payment approvals are not tied to insurance. But if you're using Procore, you are likely doing so because it is easy to use and get data into the system.  You've got people in the field updating things practically in real time, and these same people who are doing submittals, inspections, and drawings are likely also to be the ones with the latest insurance information.

Now let's see how Insurance is set up in Timbeline.

Insurance in Sage

The main difference in the structure of Insurance is that while in Procore you can enter as many insurance policies as you like, in Sage there are only six forms of insurance allowed:

  • General Liability
  • Automobile
  • Umbrella
  • Worker's
  • Custom 1
  • Custom 2
You can only use these six, but you can customize the last two (globally) to be whatever you want.  Each type has the following settings:


Now this is insurance for a specific vendor.  But you can also have insurance  specific for each Commitment in Sage.  This concept does not exist at all in Procore.   Isn't this odd - both systems have insurance at the Vendor level, but in Procore you can also set insurance for a particular vendor on a project, but in Sage you can put insurance on a commitment.

The data you put  on Commitment -level insurance is mostly the same as with vendor  insurance, as shown below.



But note these differences:
Vendors have "Require per commitment", which means that each commitment  for that vendor must have its own insurance policy set.  Vendors  have "Proof Required", and  Commitments have "Required", each of which means that the insurance policy must be set on the vendor or commitment and in effect in order to pay the vendor in AP.  The "Override" setting means allow a vendor  to be paid in AP, even if the insurance is not received.  You will still get a warning, though.
The "Received" on the commitment is an oddball.  It is a check box which effectively means  the same thing as the "Received Date" on the commitment and vendor.

Sage's insurance setup helps to enforce compliance.  When your records are up to date then you can be sure that you won't pay vendors unless they are in compliance.

Keeping them in Sync

So how best to keep the two systems in sync?  Well, first you need to make sure you understand what it  means to be in sync.  Both systems  have global vendor insurance.  But Procore lets you have an unlimited number of policies of  any type, while Sage only lets you have 6 policies, 4 of specific types, two you can customize.

So at the vendor level, you can sync up to 6 types of insurance between Sage and Procore.  But you need to decide on a convention for mapping the types.  For example, will your Sage "Worker's" insurance map to one in Procore called "Worker's"  or "Workers" or "Workers Comp", or some other variation of "Worker's Compensation Insurance"?  And what will you call the two custom insurances, if anything?

Once you've decided how to map the different types  for each vendor, then which fields will be mapped?  Some are obvious.  Sage "Company" maps to Procore "Insurance Provider", just as the Policy numbers easily map as do Limit, Effective Date, and Expiration Date.  There is no "Received Date" in Procore, but there is a "Received" check box, like the one on commitments in Sage.  But there is no check box for received for Sage vendor  insurance, just the received date.

In Sage there is "Required" and "Override", and  in Procore there is "Exempt".  Should "Exempt" be checked if "Required" is not checked?  Or should  it be set if "Override" is set?

Now those were the easy decisions!  Those were for when  you have the same vendor in both systems and you want to map insurance.  But how should you deal with project-level insurance in Procore, and commitment-level insurance in Sage?


In Procore, every commitment belongs to one and only one project.  But in Sage, a commitment  does not have to be associated with a project at all!
Procore commitments must always belong to a Projects.  But Sage commitments are associated with projects through their lines.


Insurance for Sage Commitments

Since commitments always have an AP Vendor, and since that vendor can specify whether insurance is required per vendor, the first thing to ensure is that if there is a vendor in Sage which has "Required per Commitment" checked, then each commitment must also have the same insurance as its parent  vendor.  But there is no analog in Procore.


Insurance for Procore Projects

In Procore, if you have project-level insurance for a vendor, that implies that in Sage, each commitment to that vendor within that project should have the same insurance.  This gets tricky because in Sage, a commitment is not tied to any  specific project directly.  Instead, a commitment has lines, and each line is tied to a project.  But there is no requirement that lines on a commitment must be to the same job.  You can write a subcontract or PO and have different lines tied to different jobs.  Sage does not care.


This Sage commitment has two lines written to two different projects, and one line written to none!

Let's assume the above scenario happens, and in Procore, Vendor 100 has a global auto policy, and a specific auto policy for jobs 03-001.  Which policy should be used for this commitment in Sage?  Well, there is no good answer, at least no answer that can be automated.  Many companies, however, have a policy that each commitment  must be tied to one and only one job.


Conclusion

It is possible to have insurance in both systems, and to have a limited set of insurance types in sync  between the two.  But there are going to be compromises.  Whether it is in which if the 6 types of global vendor insurance you decide to link, or how to process insurance at the project and commitment level, choices need to be made.  In the next post I will describe what I feel is a good compromise that would be helpful for most companies.














Wednesday, October 28, 2015

Xamarin at OpenWorld

On the first day of Oracle OpenWorld I was walking along 5th street, between Moscone West and Moscone South, when someone handed me a flyer. This is not unusual at OpenWorld, and I expected the flyer to be about some thing which I did not care about in the least, some obscure company that did some obscure thing with some obscure Oracle product.

But the flyer said Xamarin.  I did a double take.  "Why is Xamarin here?" I thought.  OpenWorld is dominated by Java and Java developers.  And Xamarin is all .NET.  Not just a shop that uses .NET by chance or casually - these guys are hard-core, serious developers, and the Mono/Xamarin team has been core to the development of .NET.   So why were they here in the land of Java? I pondered this a few days, then on Tuesday night, decided to stop by their event at the Red Dog saloon.

So why did this strike such a chord?  Well, I am a fan of walking, and a fan of podcasts.  So I tend to walk alot and listen to alot of podcasts.  Miguel de Icaza is a founder of Xamarin, and I recall quite well him talking about the founding of Xamarin back in 2011.  It could have been on a number of different podcasts, such as Hanselminutes, Herding Code, or even Ruby Rogues.

Before Xamarin, Miguel worked on Mono - a project started in the early 2000s to make .NET run on non-Windows platforms.  That project was exciting to me, and even though most of our clients are 100% windows shops, I followed the developments in Mono.  The fact is that Microsoft claimed that .NET would follow standards and be platform-neutral, but that was just a theory.  Miguel and his team had the audacity to take that theory and make it a reality.  They created Mono, a version of .NET that could run on non-Windows devices.  It was not easy by any means.  They worked with/struggled against Microsoft, both politically and technically.  And wound up making a success, and keeping Microsoft true to its claim of platform neutrality. But the Mono project was always overshadowed by the fact that the Mono team worked at Novell, a rickety old corporation, ready to die or fade like so many other pre-millennial companies that failed to stay lean and relevant.

Fortunately (in hindsight) Novell was acquired by another company in 2011, and laid off Miguel.  He then announced the foundation of Xamarin, a company dedicated to carrying forward on the Mono ideals.  This was a great underdog story, so really appealing to me and many others.  Xamarin launched Xamarin studio, a cross-platform integrated development environment (IDE) for .NET development.

Another Mono product which Xamarin further developed was Mono Touch and Mono for Android, frameworks for deploying .NET solutions onto iOS and Android devices.  I had heard about this, and recall a "smackdown" meetup back in 2012/13 where Xamarin was pitted against PhoneGap and Titanium in a contest to see who could build an app fastest.  This was fun and interesting.  But my group does not do app development, and so I did not really follow this further.  Xamarin faded from my awareness, into the background of a zillion other software companies.

So now it's 2015, a few years since Xamarin was founded, and here they were at OpenWorld.  It turns out they are headquartered in San Francisco (for some reason I imagined Miguel was in Colorado Springs).  And the company just joined on as a partner or Oracle (see the announcement here). And Xamarin now has a focus of which I was unaware.  They are dedicated to ensuring that using Xamarin, you can write apps which will work on ANY device.  Their team in Denmark purchases mobile devices from around the world and has an extensive suite of tests to verify that apps made from Xamarin work on them all.

I had a great conversation with Charles Wang, automation engineer, and Villars Gim, procurement manager.  They explained how Xamarin has three areas of focus:  Building, Testing, and Monitoring.
Building is ensuring that Xamarin Platform enables developers to write C# code for their mobile apps and those apps, written once, can be pushed onto iOS, Android and Windows phone.  Possibly more device platforms than that, but who really uses Blackberry anymore?

Testing is verifying that the apps created with Xamarin will work on almost all devices.  Developers can use Xamarin's TestCloud to run tests on practically any device.  And Villars is responsible for making sure that they actually have every device that they can lay their hands on - from the latest iPhone to the most obscure/obsolete phones and tablets.

Monitoring is fairly new. This is having an infrastructure for getting feedback from Xamarin apps running on devices in the hands of end-users. Checking stability and performance, and using this to identify issues quickly.

So I am very glad I went and learned more about Xamarin.  The underdog of 2011 is now a thriving company, with a strong team of very intelligent and enthusiastic people. And their very impressive suite of mobile development tools help you create, deploy, monitor your apps across devices.   Now I just wish I had a reason to make an app...

Good on ya Miguel!

San Francisco
Oct 2015



Sunday, October 25, 2015

OpenWorld - SIG Sunday

While the official Oracle OpenWorld sessions start on a Monday, the Sunday prior is dedicated to user group sessions.  Usually people arrive on Sunday and the sessions are in the afternoon. But this year the Oracle Primavera SIG was at 9am - and that was not even the earliest session!

The sessions started at 8am and continued to 4:30. There were about 20 to 25 sessions going on at any given hour, for 8 hours.  That's a lot of people and a lot of info!   So what are all of these talks?

A SIG is a Special Interest Group, organized by OAUG, IOUG, and Quest.  There are many such groups, dedicated to many interests. There are ones about technology such as BI Piblisher and Fusion Middleware.  There are regional ones such as Latin America and Central States.  There are sector specific ones such as Higher Education and Cost Management. And of course application specific like Primavera.

The OPSIG meeting was run by John Hartman of CH2M Hill.  At that meeting I learned that P6 Analytics is being renamed to Primavera Analytics, in anticipation that future versions will provide analysis of more than just P6, such as Unifier and Instantis.  We also learned about the activities of the SIG, most importantly that the deadline for Collaborate 16 abstracts is less than two weeks away! 

After OPSIG I did not have anything specific planned, so attended a few of the talks on the roster.

The first one was about - Trek Bicycles!  A subject dear to me as I certainly wished I had been out riding my Trek on this lovely fall Sunday.    It was quite interesting, given by Bryan Turner of Trek, and Viral Doshi of KPIT.  Trek recently set up sensors at their plant in Wisconsin to track their supply of decals.  The decals go under the outer coating of clear paint on a bike, and are specially ordered from suppliers as needed.  If they don't have the decals, they can't finish their bikes - which is bad for the bottom line.  And since the decals and suppliers were known quantities, this was an excellent situation to try out using sensors to automatically re-order the decals when needed.  This system is simply a set of sensors which measure the height of the stacks of decals in inventory.  When inventory gets low, the sensor communicates to JD Edwards, which then generates and sends out a Purchase Order.  Pretty simple, but a great way to save time at Trek and ensure that they don't have to halt a bike shipment due to decal shortage.

It also turns out that Trek was involved in the B-Cycle project in Denver/Boulder!  Another project dear to my heart.


The next talk was from Jon Wakefield of Velocity, a consulting company based on North Carolina.  They are specialists in Peopleoft, Fusion HCM, and Taleo.  Taleo is yet another company acquired by Oracle, back in 2012.  It is a product for recruiting and managing talent.  But the goals of the project are something I am very familiar with - integrating data between different systems.  The project for Velocity actually involved more than just integration, it started with helping the client migrate from PeopleSoft to Fusion HCM, no small task by itself.  Once the migration was done, Velocity set up systems for extracting data and importing data using a combination of batch scripts, file transfers, and imports.   We also learned about the HCM Data Loader, and other technologies that help with migrating and integrating data with Fusion HCM.

The last session I attended was Integration in the Cloud, by S&P, a company based in Mexico City.   This also was a talk about integrating Taleo, but this time with PeopeSoft.  The speakers, Arturo Viveros and Rolando Carraso, are Oracle ACE's in the integration space, and heavily involved in the Latin American user community.  They also have a blog called SoaMythBusters, which discusses the happenings around Oracle's various integration technologies.  One of the most interesting things I learned about at this talk was the existence of Oracle Integration Cloud Service (ICS).  This is a hosted service which can be used to integrate your data between cloud-cloud systems, or a mix of cloud and on-premise systems.  This is a very important part of Oracle's overall strategy of not just selling licenses anymore, but of being a provider of cloud services.  If you look at their pricing these days, the cloud license costs are comparatively cheaper than their on-site licenses.  But traditionally, cloud-hosted solutions can be difficult to integrate.  I have much more to learn about ICS, and am looking forward to doing so during the rest of OpenWorld 2015.


San Francisco, CA
Oct 2015



.   

Sunday, October 18, 2015

Heading out to Oracle OpenWorld 2015!



The aspens have turned gold, and the bright crisp days of autumn are upon us here in the Colorado Rockies.  This means it's time to head to San Francisco for Oracle OpenWorld!

This year we are excited to learn more about the Primavera Gateway integration product and the plans Oracle has for its development in 2016.  We have dived deep into Gateway in the 3rd quarter of 2015, and have created our own Calance PeopleSoft Provider.  We are now actively using it to integrate data between PeopleSoft and a set of custom business processes in Unifier.  In this work we have learned much about Gateway, and we have feedback to share with the Oracle team on what we perceive to be its strengths, as well as its shortcomings, with the aim of helping this product improve and deliver better and better solutions for Primavera users.

We are also curious to learn about plans for Unifier, particularly its mobile options. These days clients (and you, and me, and everyone we know) prefer to do many tasks on mobile devices such as phones and tablets.  If an application cannot work on one of these devices, that is a major disadvantage. Unifier is fortunately not hindered by Java applets like Primavera P6.  So in theory, a re-skinning with responsive design could get Unifier working natively on mobile.  But it may be that Oracle Primavera would instead create a true mobile app, much like the P6 Mobile app for iOS and Android (sorry Widows phones!).  Or the lightweight Team Member HTML5 app which works great on an iPad.  Neither of these P6 solutions have the power of the desktop web, which is itself much less powerful  than the P6 Professional desktop client.  But they are good moves in the struggle to liberate P6 from the PC.  Anyway, we are much looking forward to learn what mobile options Oracle is planning for Unifier.

Although it is hard to miss a week of this lovely weather, with the leaves falling and the chance of first snow, San Francisco is a great place as well.  AirBnB and Uber make is easy, cheap, and  fun to stay and get around the city, and the entertainment this year is Beck and Elton John - how could you go wrong with that?


Boulder, CO
Oct 2015

PS: Our new website is now  live - check it out here:
http://www.calanceus.com/development/oracle-integration/

Fall in the Rockies


Saturday, October 17, 2015

Procore, and its Integration API, is simply awesome


Calance joined the Procore Beta program in the 3rd quarter of 2015.  We had a long-term client who was moving to Procore and they needed some integrations with Sage 300 CRE that Procore did not provide out of the box.  This client has been using our Dimension Integration Framework to integrate data between Oracle Primavera Contract Management 13 and Timberline  Accounting (aka Sage 300 CRE) since 2009.   They were in the process of migrating off of PCM and replacing it with Procore, and asked us to help out.   

While we were a tiny bit sad to see yet another customer move off of PCM, that little sadness was greatly offset by the excitement we felt once we started working with the Procore team and got the opportunity to see Procore in action. It not only has a clean, modern user interface, but it has an equally modern and well-documented API, making integrating with it actually pleasurable!

Let's get the obvious out of the way first - what are the benefits of Procore from customer's point of view?    Well, it lets you manage contracts, vendors, commitments, submittals, RFIs, bids, punch lists, and more.  All the things you need to manage construction projects, making it ideal for General Contractors.  You can even manage Prime Contracts, which is a very nice feature.  It is hosted, so you don't have to purchase hardware and go through painful installations (I'm looking at you Oracle!).  

Also, you can use it anywhere.  It's designed for modern web browsers, working great on PCs, Macs,  and tablets.  And while it's not ideal on a  phone, you actually  can zoom in pretty well and  still get things done.  Procore also provides free apps for mobile and tablets.  Right now these are mainly for reading information, but we expect Procore to improve on them with time.  

Procore provides a set of integrations with Timberline which provide basic functionality.  Where we get involved is where clients need solutions not provided by Procore, such as insurance updates and payment holds.  We are looking to take our complete Timberline integration suite we have developed over the years for PCM and adapt all of it for Procore. This includes projects, cost codes, extras, estimates, budgets, change orders, commitments, commitment change orders, payments, pay rates, and much more. It's a big project, but well worth it.

Another feature we love is demonstrated by the image below, a pop-up which appeared as we were working in the system one day:



As you can see,  the Procore team is constantly improving its product, and they are being very transparent about it.  As updates happen, everyone gets them, and are notified  in friendly messages like this.  They don't make a big deal of it, this consistent, continual improvement is key to their success. This mixture of technical drive and open communications makes Procore stand out as a product designed for the next generation of users.  And even old-timers like myself really appreciate it!

Boulder, CO
Oct 2015

PS: Our new website is now  live - check it out here:
http://www.calanceus.com/development/integration/

Tuesday, August 25, 2015

The Rising Demand for PeopleSoft Integration in the Public Sector

The Rising Demand for PeopleSoft Integration in the Public Sector

In the past two years Calance has seen a growing demand for integrating PeopleSoft with project controls systems.  This demand is particularly noted in the public sector, as public entities are seeking to manage capital projects and programs in more rigorous and accountable ways than the past practice of multiple, unrelated systems and spreadsheets.  

There are a myriad of methods for tracking project and program health including: schedules, funding allocations and expenditures, contracts and changes, facilities conditions, and document turnaround times.  The tools for tracking such things are also diverse, and include a number of products in the Oracle Primavera family such as Primavera P6, Contract Management (PCM), and Unifier.   But the tools also extend to other Oracle products such as Hyperion, other commercial systems such as Maximo, and systems such as home-grown applications and of course the ubiquitous Excel!

This trend to standardize program and project health metrics is driven by demand for more accountability and transparency in the use of public funds.  And such accountability and transparently ultimately benefit organizations which are seeking public funding.  It is not always easy for public organizations to adapt new tools and practices, but it is essential to their long-term success.

How does Calance fit into this dialog of transition and improvement in the Public Sector?  For many years, we have been working with many public entities, helping them to implement and integrate project controls systems, going back to their first work with the Los Angeles Unified School District in 2004.  In that project we integrated Primavera Expedition with a home-grown solution, and helped to automate management of P5 (later P6) projects and baselines.    Since then we have worked with a number of other school districts, including San Diego and New York, taking best practices and turning them into automated data integrations which improve data quality and turnaround times, while enhancing use of best practices across the organization.

Our in-house product, the Dimension Integration Framework has been fundamental to this success.  Dimension allows us to bridge data across multiple systems, not only for data integration, but also for automation of tasks.  For example, using Dimension automation, we have streamlined contractor payment processes for clients.

Dimension is a very mature product.  First created in 2001 for integrating Primavera with JD Edwards, is has undergone continuous improvements since then to meet the needs of our current customers, adapting far beyond the first systems integrated to include many more.  We do not let Dimension sit still, but take advantage of improved technology as software techniques and hardware capabilities advance.  Today, Dimension is capable of many things, from performing simple point-to-point field mapping to advanced mapping operations which can handle thousands of active projects across multiple databases. Dimension has also adapted to work with in-house or cloud-based systems, making it ideal for integrating PeopleSoft with the latest project control system from Oracle Primavera - Unifier.  But that is a topic for another post.

Until then, may your data serve your organization, not vice versa!

Boulder, CO
Aug 2015




Friday, July 31, 2015

Invoices and Vouchers - disambiguation and some advice on how to Get Invoices into PeopleSoft

When integrating Invoices with PeopleSoft a number of terms are bandied about, and there is much confusion about the words Voucher and Invoice.  In this write up I want to clarify some things about how PeopleSoft treats Invoices.

An excellent description of Vouchers versus Invoices  is here: http://www.accountingcoach.com/blog/difference-invoice-and-voucher

In summary:

Invoices are received by Purchasers, and are issued by Vendors.  Vouchers are internal documents created by Purchasers to track and record Invoices.

So these two items are different sides of the same coin.  Now enough with the general items, let's talk PeopleSoft.
In PSFT the actual item is called a Voucher.  The Voucher system is basically a PeopleSoft module for making payments to vendors.  

There really are no AP Invoices in PeopleSoft.  Instead, there are Vouchers.  Which makes sense, since PeopleSoft is our system and we are Purchasers. (The Royal we, meaning all of our clients who are users of PeopleSoft, and for whom we do this integration work.)

There are a few fields that are always required on a Voucher.
  • VENDOR_ID
  • VOUCHER_ID
  • INVOICE_ID
  • INVOICE_DT

VENDOR_ID - Of course if you are going to pay someone you must know who that person is!  Vendors in PeopleSoft are entities that you can send money to. Such entities can include city governments, subcontractors, prime contractors, and suppliers.

VOUCHER_ID - This field is unique to each record in PeopleSoft .  When you enter a new Voucher, PeopleSoft will generate a VOUCHER_ID for you if you like.  It will simply take the next available number in the system.  You may also send PeopleSoft your own number if you wish.  We often do this in integrations when the integrated Vouchers need to clearly stand out from standard ones.  Generally we add a prefix onto these, so a Voucher_ID would look something like "DIM00001" rather than something like "00000001".  Since this number must be unique within PeopleSoft, it can be a bad idea to force this to match a number from another system unless you can guarantee that the number is unique.
But if, for example, you have set up Primavera Unifier to make sure that Invoices are unique across the whole system, you could use those as your Voucher number.  However, this is not standard practice.

When you ask someone in AP to look up a voucher, the best pieces of information you can give them are Vendor ID and Voucher ID.   This lets them quickly and unambiguously find a specific Voucher.

INVOICE_ID - This field is 30 characters long and can contain any standard characters.  PeopleSoft does NOT populate this field.  Instead, the user must provide a value.  It is required and cannot be blank.  A specific INVOICE_ID value also cannot already be used for a given vendor.  This means that VENDOR_ID and INVOICE_ID must be unique.   This field is often used to replicate the number provided on a vendor's invoice.  That numbering system is usually unique to a vendor. For example, the invoice number on a Home Depot receipt will have nothing to do with the invoice number from an Amazon order.
An integration can generate an INVOICE_ID, but this is sometimes not desirable, mainly because INVOICE_ID is usually prominently displayed on a printed Invoice.

INVOICE_DT is  the date of the invoice.  Like INVOICE_ID, this is generally supplied  by the vendor on their written Invoice.  PeopleSoft does not generate this  value.

All this is to drive home three points:

  • The INVOICE_ID and INVOICE_DT cannot come from PeopleSoft.  They either must come from an external source such as Unifier, or we must establish some algorithm for generating these values.
  • The  VOUCHER_ID is created in PeopleSoft (when letting it generate the number automatically), and should be written back to the external system.  Even if we decide to create it from the external system, writing it back will explicitly show us that the Invoice exists as a Voucher in PeopleSoft and gives us a clear number to give to AP people if we have questions about a specific Voucher.
  • We must know which vendor an Invoice is written to, and that ID must come from the external system.

I hope this helps to clarify how Invoices are used in PeopleSoft with regards to integration with external systems such as Primavera.

Boulder, CO
July 2015





Saturday, July 18, 2015

Weblogic NodeManager port 5556 conflicts with VideoStream for Chromecast


I was installing the latest version of Primavera Gateway on my home machine last weekend and ran into an issue where WebLogic would not start.  The problem is that NodeManager is set to run on port 5556, and  I kept getting messages that another program was using that port.
Here is the message:

<Jul 18, 2015 6:13:29 PM MDT> <SEVERE> <Fatal error in NodeManager server: The server is unable to create a server socket for listening. The address localhost might be incorrect or another process is using port 5,556: java.net.BindException: Address already in use: JVM_Bind>

I ran the following command line to see which process had the port:

> netstat -abnp TCP 

The result:

  TCP    192.168.1.6:5556       0.0.0.0:0              LISTENING
 [chrome.exe]


Why would Chrome be using a port?  It turns out that this was not Chrome directly, but an extension I use which allows me to stream movies from my desktop to my Chromecast (Surprisingly, even if a movie can play fine on your PC, Chromecast will not always recognize it. But Videostream can play almost any format).


I went to Chrome->More Tools->Extensions and  found the culprit:
Now I just happend to get lucky searching on 5556 and Chrome and found articles mentioning port 5556.  If I had not found that, then I would have had to try disabling every extension until it worked.  One work around was to just turn Chrome off completely.  But it's hard for me to get anything done without Chrome :) 

Sunday, February 1, 2015

Simple and Cheap Ikea-based Standing Desk

Cheaper and Easier Ikea-based Standing Desk

There are many Ikea hacks out there to make standing desks, of variable quality and simplicity.  Here is what I consider to be one of the best, made for about $70.  If you have an office with a number of employees, and don't want to blow your coffee budget on furniture, this is the best bargain out there.  It uses a basic Ikea table, and then simple plumbing hardware from Home Depot.  It is light, fast to set up, adjustable, and requires very little in the way of tools or skill.




Start with a basic Linnmon table top with Adils legs.  We use the ones that are 59 inches long and 29.5 inches wide, in the Birch color.  Legs are silver.

Table Top:  Linnmon $18

Legs: Adils 4x $4 each = $16


Just these items alone comprise a basic desk with lots of space to work with.  If you don't need a standing desk, this is a great deal at about $35.  It is 29 inches high.



Now let's take it to the next level!  We are going to raise this table by 12 inches to make it 41 inches, which is a pretty good height for a standing desk.  Using this technique it is also very easy to adjust the height to 39, 42, or whatever works best for you.

Go to Home Depot (or your favorite hardware place), and purchase the items in the image below:



Four 2 foot lengths of 1.5 inch Schedule 40 PVC pipe
Four 1.5 inch end-caps
Four 1 foot lengths of 1 inch PVC pipe (I actually got one section of 1 inch by 10 foot PVC pipe and had it cut there)

The 1.5 inch lengths are actually sold in 2 foot lengths at my local Home Depot, which makes this part easy.  The 1 foot lengths of 1 inch pipe were not sold separately, so I bought a 10 foot section.  I figure I can use this to adjust legs or convert more desks, or use it in my garden for irrigation!

How much does all of this cost?  Why only $27.04

If you cannot have the 1-foot pieces cut in the store, you can use a PVC cutter tool to cut them yourself.  This is much easier than using a hack saw.  The tool costs about $6.50 at home depot, and is wonderful if you do PVC work.



Next turn your table upside down (this is easy as the table is very light).  And slide the 1.5 inch pipe over each leg.



It should fit snugly, but with enough room to slide it down the pipe.  Before you slide it all the way, drop in a 12 inch section of the one inch pipe.  This is what determines the height of the standing desk.  These four 1 inch sections are what the original Adils legs rest on.  Then end caps cover the 1.5 inch pipe so that the open pipe does not dig into the carpet.


Do this on each leg.  If it's too tight, don't worry, just get them on, and then turn the table over and use your weight to push them so that they are snug.

Here is the final product.  I did not know what to do with the existing desk, so just put this over it, which fits surprisingly well.


If you want to adjust the desk height, just use your PVC cutter to create four more sections.  Remove the legs and replace the 12 inch ones with the ones that best suit you.

I did not have the hardware to get the monitors off of the desk (major waste of space!).  But here is a photo of the basic idea.  Just get two short bracket rails and a shelf.  Also from Home Depot.












There you go!  $50 for the Ikea table, which works great by itself as a non-standing desk, then $27 more to stand it up.


Happy hacking!