Automated conversion from Unified Repository 2010 Edition to Orchestra and validation of results
There are now two build procedures which will run in parallel, an XSLT and a Python script. Both are triggered by GitHub Actions workflows.
This process uses Git repository [email protected]:FIXTradingCommunity/unified2orchestra.git. The first time you run this process, clone the repository, and subsequent times you should pull to get the latest release.
- Add a Unified Repository file and its associated phrases file to the Git repository under the
unifiedfolder. - Edit the
build.propertiesfile.
unified.filepath of unified repository file to readphrases.filepath of the unified repository phrases file to readnew.namename of the stable FIX version to insert into the Orchestra file, typicallyFIX.Latestnew.versionversion of the Orchestra file, typicallyFIX.Latestfollowed by and underscore and EP number
Example:
unified.file=unified/FixRepository_EP259.xml
phrases.file=unified/FIX.5.0SP2_EP259_en_phrases.xml
new.name=FIX.Latest
new.version=FIX.Latest_EP259
- Commit the changes to Git and push.
Git push should automatically trigger the build process in GitHub. The process runs two applications:
- Unified2OrchestraTransformer translates the Unified Repository file to an Orchestra file.
- RepositoryValidator validates the produced Orchestra file. Currently it just makes sure that it conforms to the XML schema. Other validation rules may be added in the future.
See https://github.com/FIXTradingCommunity/unified2orchestra/actions to retrieve the produced artifacts.
- Artifact
orchestracontains the intended Orchestra file. - Artifact
logcontains application logs. Review any items logged by RepositoryValidator. Even though unified2orchestra ran to completion does not mean that the resulting Orchestra file is valid according to the XML schema.
The Python script orchestratransposer.py is invoked to transform Unified Repository to Orchestra v1.0. The script was copied from the orchestra-transposer project in GitHub, which should be considered the golden copy. See that repository for documentation.
The Python script validates that the files conform to their respective XML schemas.
Like the XSLT build, the Python produces two artifacts, an Orchestra file and a log file. These two artifacts can be downloaded from the GitHub Actions page for "python" workflow. If an XML schema violation occurs, the Orchestra file may not be produced.
The GitHub workflow provides arguments to the orchestra-transposer script. The Unified Repository file is always expected to be named "FixRepository.xml". However, its phrases file name changes for each EP, e.g. "FIX.Latest_EP272_en_phrases.xml". Therefore, the workflow need to be edited to modify the file name for each EP.
The file to edit is called .github\workflows\python.yml. This is the line to edit:
run: python3 orchestratransposer.py unified/FixRepository.xml unified/FIX.Latest_EP272_en_phrases.xml -f unif -t orch -o orchestra-p.xml
In your GitHub profile, visit Settings/Notifications/GitHub Actions to control notifications of build failures.
Click on a build link to view GitHub Action process logs.
© Copyright 2020-2025 FIX Protocol Limited
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.