So as part of my job is to analyze data that will be shared among government entities and create the appropriate service artifacts for the services that will carry the data within the service bus. And as part of the guidelines and standards, each service must have its own WSDL file and the data definition within another schema, i.e. XSD.
Now when getting involved with load of work your brain start to skip common sense, I know mine does this sometimes, and proceed with normal assumptions that the sky is always clear and sunny. Well, your assumptions might not be at your best interest like the work I done on this particular service, lets assume the agency X. Now agency X acts as a service provider and decided to skip validating its data against its service schema due to change in their business. Specifically, they either disabled the validation as a whole or decided, against the service agreement, to modify the service schema and remove the restriction on an element there. So as expected this caused a total service failure for any call that resulted in violating the schema at other agencies (the bus is failing, the clients don’t validate the data). This in effect caused an immediate response form our part to engage with modifying the service to their taste, not of our best interest to start blame game, which in turn made me assume stuff.
As part of our guidelines you can branch the schema to minor version if you add something that doesn’t break the integrity of the data semantics or syntax, adding new element or changing the restrictions. But if you break that rule then you need to have to branch the schema into a major version. The same almost applies to the WSDL, if you don’t change any existing operations then just branch into minor, like adding a new operation. Otherwise branch into a major version.
In this particular situation I am not changing the data structure so it is minor. But for the WSDL there is nothing to change, except the schema location for the modified XSD, so my fuzzy memory told me to that our state-of-the-art service bus will take care of this through some sort of schema and data transformation. Well, I proceed with leaving the version number in the WSDL intact and branched the service schema. And lo and behold as I jumped arguing with my colleagues why my approach is the right one and it is what made sense. All this time my mind was fixed on that fuzzy memory on how this actually should work. Man I wasted so much time from my colleagues which made me feel bad and all because I was trusting my imaginations. And the service deployment met with a failure that involved me working again on that service.
Ah, there is no limit to the human ignorance which I passionately have in abundance.