diff --git a/.github/actions/generate-report/action.yml b/.github/actions/generate-report/action.yml
new file mode 100644
index 00000000..b3787523
--- /dev/null
+++ b/.github/actions/generate-report/action.yml
@@ -0,0 +1,58 @@
+name: 'Generate the Report'
+description: 'Generates the report using the log-file-name file present just inside the sample folder path provided , given Validation Folder is there inside the sample folder as well'
+inputs:
+  lang:
+    description: 'The language or framework in which SDK is written needs to be given as an input'
+    required: true
+  sample-folder-name:
+    description: 'The name of the sample folder'
+    required: true
+  log-file-name:
+    description: 'The name of the generated log file'
+    required: true
+outputs:
+  result-pdf-name:
+    description: 'the name of the final generated pdf report'
+    value: ${{steps.generate.outputs.pdfname}}
+runs:
+  using: 'composite'
+  steps:
+    - name: Setup Python v3.12 for report generation only
+      uses: actions/setup-python@v5
+      with:
+        python-version: 3.12
+    - name: Installing required python libraries and running the python programs to generate pdf report
+      id: generate
+      run : |
+        export EXPECTED_RES_LANG=${{inputs.lang}}
+        if [[ "${{inputs.lang}}" == "dotnet" ]] || [[ "${{inputs.lang}}" == "dotnetstandard" ]]; then
+          export EXPECTED_RES_LANG=csharp
+        fi
+        echo $EXPECTED_RES_LANG
+        python --version
+        echo "Before Running Report Generation"
+        cd ${{inputs.sample-folder-name}}
+        python -m pip install --upgrade pip
+        python -m venv newve
+        if [[ "$(uname -s)" == "Linux" ]]; then
+            echo "In LINUX"
+            source newve/bin/activate
+        elif [[ "$(uname -s)" == "Darwin" ]]; then
+            echo "In MAC"
+            source newve/bin/activate
+        else
+            echo "In Windows"
+            source newve/Scripts/activate
+        fi
+        echo $VIRTUAL_ENV
+        pip install json2html
+        pip install xhtml2pdf
+        pip install bs4
+        cd Validation
+        python sample_code_log_processor.py -l ../../${{inputs.sample-folder-name}}/${{inputs.log-file-name}} -o ../../${{inputs.sample-folder-name}}/${{inputs.lang}}_actual_results.json
+        python response_code_validator.py -e ExpectedResults/${EXPECTED_RES_LANG}_expected_results.json -a ../../${{inputs.sample-folder-name}}/${{inputs.lang}}_actual_results.json -o ${{inputs.lang}}_validation_results.json
+        python json_to_prettified_html.py -i ${{inputs.lang}}_validation_results.json -o ${{inputs.lang}}_validation_results.html
+        cp ${{inputs.lang}}_validation_results.pdf ../  #copying the file to flaatten the directory of the upload artifact,Github Actions doesn't support that as of jun 2024
+        echo "pdfname=${{inputs.lang}}_validation_results.pdf" >> $GITHUB_OUTPUT
+      shell: bash
+
diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml
new file mode 100644
index 00000000..2b12bb61
--- /dev/null
+++ b/.github/workflows/workflow.yml
@@ -0,0 +1,94 @@
+name: DOTNET-STANDARD BUILDS
+on:
+  push:
+  pull_request:
+  workflow_dispatch:
+env:
+  CLIENT_FOLDER: 'cybersource-rest-client-dotnetstandard'
+  SAMPLE_FOLDER: 'cybersource-rest-samples-csharp'
+jobs:
+    workflow-job:
+        defaults:
+          run:
+            shell: bash
+        strategy:
+          fail-fast: false
+          matrix:
+            operating-system: [windows-latest,windows-2019,ubuntu-latest,ubuntu-20.04,macos-latest,macos-13]
+            dotnet-ver: ['3.1.x','5.0','6.0','7.0','8.0']
+            exclude:
+              - operating-system: macos-latest  #macos 14 arm64 image is being used and it doesn't support .NET Core 3.1
+                dotnet-ver: '3.1.x'
+              - operating-system: macos-latest  #macos 14 arm64 image is being used and it doesn't support .NET 5.0 
+                dotnet-ver: '5.0'
+        runs-on: ${{matrix.operating-system}}
+        env:
+          NET_VER: ${{matrix.dotnet-ver}}
+        steps:
+            - name: Setup Git Config for windows to allow path lengths greater than 260 characters
+              if: runner.os == 'Windows'
+              run: |
+                git config --global core.longpaths true
+            - name: Checkout the cybersource-rest-client-dotnetstandard repo
+              uses: actions/checkout@v4
+              with:
+                path: ${{env.CLIENT_FOLDER}}
+            - name: Checkout cybersource-rest-samples-csharp repo
+              uses: actions/checkout@v4
+              with:
+                repository: 'CyberSource/cybersource-rest-samples-csharp'
+                ref: 'master'
+                path: ${{env.SAMPLE_FOLDER}}
+            - name: SetUp DotNet
+              id: setdotnet
+              uses: actions/setup-dotnet@v4
+              with:
+                dotnet-version: ${{matrix.dotnet-ver}}
+            - name: Changing the csproj files to reference the locally built Authorization and Client dll file
+              run: |
+                if [[ (${{matrix.dotnet-ver}} == '3.1.x' && "$(uname -s)" == "Darwin") ||
+                (${{matrix.dotnet-ver}} == '5.0' && "$(uname -s)" == "Darwin") ]]; then
+                  echo "Microsoft .NET SDK version ${{matrix.dotnet-ver}} has issues for Mac OS, latest Microsoft .NET SDK will be used for building the projects."
+                else
+                  dotnet new globaljson --sdk-version ${{steps.setdotnet.outputs.dotnet-version}}
+                  cat global.json
+                fi
+                sed -i -e 's||\n  ../../cybersource-rest-auth-netstandard/AuthenticationSdk/AuthenticationSdk/bin/Release/netstandard2.1/Cybersource.Authentication.NetStandard.dll\n  true\n|g' cybersource-rest-client-dotnetstandard/cybersource-rest-client-netstandard/cybersource-rest-client-netstandard/cybersource-rest-client-netstandard.csproj
+                sed -i -e 's||\n  ../cybersource-rest-client-dotnetstandard/cybersource-rest-auth-netstandard/AuthenticationSdk/AuthenticationSdk/bin/Release/netstandard2.1/Cybersource.Authentication.NetStandard.dll\n  true\n|g' cybersource-rest-samples-csharp/cybersource-rest-samples-netcore.csproj
+                sed -i -e 's||\n  ../cybersource-rest-client-dotnetstandard/cybersource-rest-client-netstandard/cybersource-rest-client-netstandard/bin/Release/netstandard2.1/cybersource-rest-client-netstandard.dll\n  true\n|g' cybersource-rest-samples-csharp/cybersource-rest-samples-netcore.csproj
+                cat cybersource-rest-client-dotnetstandard/cybersource-rest-client-netstandard/cybersource-rest-client-netstandard/cybersource-rest-client-netstandard.csproj
+            - name: Build the Authentication and Client projects
+              run: |
+                dotnet --version
+                dotnet build $CLIENT_FOLDER/cybersource-rest-auth-netstandard/AuthenticationSdk/AuthenticationSdk/AuthenticationSdk.csproj -c release
+                dotnet build $CLIENT_FOLDER/cybersource-rest-client-netstandard/cybersource-rest-client-netstandard/cybersource-rest-client-netstandard.csproj -c release
+            - name: Build the Samples project and Run Tests
+              env:
+                TARGET_FR: netcoreapp3.1
+              run: |
+                if [ $NET_VER != '3.1.x' ]; then
+                  export TARGET_FR=net${NET_VER}
+                  sed -i -e "s|.*|${TARGET_FR}|g" cybersource-rest-samples-csharp/cybersource-rest-samples-netcore.csproj
+                fi
+                cat cybersource-rest-samples-csharp/cybersource-rest-samples-netcore.csproj
+                #changing the target framework for samples application
+                dotnet --version
+                echo "Target Framework : ${TARGET_FR}"
+                dotnet build $SAMPLE_FOLDER/cybersource-rest-samples-netcore.csproj -c release
+                cd $SAMPLE_FOLDER/bin/Release/$TARGET_FR
+                echo "Running Samples"
+                ./SampleCodeNetCore -RunAll > output.log
+                cp output.log ../../../
+            - name: Using Report Generation Action
+              id: report-generation
+              uses: ./cybersource-rest-client-dotnetstandard/.github/actions/generate-report
+              with:
+                lang: dotnetstandard
+                sample-folder-name: ${{env.SAMPLE_FOLDER}}
+                log-file-name: output.log
+            - name: Upload Test Reports
+              uses: actions/upload-artifact@v4
+              with:
+                name: sample-run-report-${{matrix.operating-system}}-dotnet-core-ver-${{matrix.dotnet-ver}}
+                path: |
+                  ${{env.SAMPLE_FOLDER}}/${{steps.report-generation.outputs.result-pdf-name}}
diff --git a/.gitignore b/.gitignore
index d99a6f06..e6351c6c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -355,3 +355,5 @@ MigrationBackup/
 /cybersource-rest-client-netstandard/cybersource-rest-client-netstandard/build.sh
 /cybersource-rest-client-netstandard/cybersource-rest-client-netstandard/git_push.sh
 /cybersource-rest-client-netstandard/cybersource-rest-client-netstandard/mono_nunit_test.sh
+
+.DS_Store
diff --git a/README.md b/README.md
index b46dace6..0800ab68 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,5 @@
 # .NET Standard Client SDK for the CyberSource REST API
+[](https://github.com/CyberSource/cybersource-rest-client-dotnetstandard/actions/workflows/workflow.yml)
 
 The CyberSource .NET Standard client provides convenient access to the [CyberSource REST API](https://developer.cybersource.com/api/reference/api-reference.html) from your .NET application.