What is your EAM source control strategy / how do people use source control to manage code which is held as records in the EAM database?
i.e. not just the database's schema, but code such as would be found in the R5FlexSql table.
I ask as the best approach seems to be to manage certain records as self-contained objects (i.e. where the record's definition would be held in file), but some of the data in a record (e.g. ???_SQLIDENTITY columns) are not really relevant to the code; only to the deployment.
Currently I'm thinking of having a folder structure where each table which holds some form of code/configuration would have its own folder, then each record would have a file with that record's object name (i.e. based on the table's natural key; so FLX_TABLE + FLX_TRIGGER + FLX_SEQ), with the contents matching those columns we're interested in keeping under source control (i.e. all columns except FLX_UPDATECOUNT and FLX_SQLIDENTITY). The file format would probably be XML... though in the case of R5FLEXSQL I may have an SQL file for FLX_STMT, with all other fields in a similarly named XML file, so that we can take better advantage of the IDE's functionality for managing SQL code.
Full Information
Historically all SDLC activities for EAM had been handled for us by Infor, including source control.
Due to recent changes impacting our budget, we've had to bring the development in-house.
As such, I'm now looking to implement a source control strategy for EAM.
Our VCS is Visual Studio Team Services (VSTS); i.e. the SaaS offering of TFS.
I'm looking to use VSCode as the editor ("IDE-lite") as most of those working on the EAM code aren't full time developers (who'd use Visual Studio), so the lighter option appeals both for keeping the interface clean (thus lowering the learning curve), and for avoiding additional license costs. NB: Our full time developers will also be playing the role of DevOps; i.e. moving code from branch to branch as they promote these changes from environment to environment, as well as acting as quality control on the code being submitted.
For the Cognos reports, I've knocked up a helper function to allow us to quickly & easily pull back the report definitions from any environment's database (NB: some test environments use the same report content manager as one another, only using different tenants). This allows us to manage the report definition XML files with each report as its own object / also helps us sync an environment should significant changes be made to multiple reports at once (e.g. if a patch were deployed which amended such defintions). https://gist.github.com/JohnLBevan/e5343987863198a47fea2e9aab067d86
I'm looking to do similar for other code that's held in the database (e.g. R5FLEXSQL); then as a next step to write the reverse (i.e. to update the database with code from the project/file system) so that we can automate delivery of code, having each environment kept in sync with its related branch.
I'm happy to use SQL and PowerShell to add automation where that helps the process (e.g. where developers would put their code/config in via the UI; but would then want those definitions pulled back to the file system for inclusion in source control).
My aim is to have a process which moves us in the direction of DevOps / Continuous Delivery practices, whilst ensuring that the development / SDLC processes are efficient and straight forwards. Additionally the source control should aid our audit process; i.e. by allowing us to easily demonstrate how code relates to specific work items / how those have progressed through environments & been delivered to production within the agreed SDLC process.
However, I also care about what the rest of the Infor community do, as I want to ensure that our approach isn't too alien to anyone who may be called upon to join / assist us in future; and to ensure that the process I'm defining isn't reinventing the wheel if there's something perfectly good already out there for this purpose.