Integrating Siebel CRM with Microsoft Teams
Overview
This whitepaper outlines the integration of Siebel CRM with Microsoft Teams to enhance collaboration and streamline notification workflows. The integration facilitates seamless real-time communication by enabling MS Teams to notify users of significant changes made within the Siebel CRM system. It leverages RESTful APIs, adaptive cards, and dynamic deep linking, ensuring that all Siebel updates are communicated to relevant stakeholders directly in MS Teams.
Introduction
Siebel CRM is a robust customer relationship management platform that handles a wide variety of business processes. Integrating Siebel with Microsoft Teams enables users to remain updated about critical business events without having to switch between applications.
The purpose of this integration is to enhance productivity, improve communication, and reduce operational inefficiencies by pushing Siebel CRM updates to Microsoft Teams in a structured and actionable format.
Objectives of the Integration
- Real-time notifications to users in MS Teams upon key events within Siebel.
- Ensuring dynamic deep linking to specific records in Siebel from MS Teams, allowing users to access critical data quickly.
- Streamlining communication and collaboration within MS Teams by providing users with updates formatted using adaptive cards.
- Offering the flexibility to notify the correct set of users based on the changes made in Siebel.
Solution Approach
To enable seamless communication between Siebel CRM and Microsoft Teams, a RESTful API integration can be implemented. This integration will allow Siebel CRM to directly push notifications to Microsoft Teams whenever specific objects, such as accounts or activities, are modified. Custom triggers within Siebel CRM will be configured to detect predefined actions, such as the creation of a new activity or updates to account details. Upon detecting these actions, the triggers will initiate the API communication, ensuring that relevant notifications are sent to the appropriate Teams channels in real time
Adaptive cards provide a structured and visually organized format for presenting Siebel updates within Microsoft Teams, making it easier for users to quickly interpret the information. These cards include essential details, such as the type of event, the affected object, and the changes made, ensuring clarity and relevance. Additionally, each adaptive card contains a deep link to the corresponding Siebel record.
Embedded deeplinks provide users with direct access to relevant Siebel records, enabling quick and convenient follow-up actions without the need for manual navigation. By embedding these direct links, the integration significantly enhances the user experience, reducing the time spent switching between systems and allowing users to respond more effectively to important changes.
Users can specify which objects and updates they wish to monitor, ensuring tailored notifications that align with individual roles and responsibilities. Additionally, admin settings within Siebel provide centralized management, which can be used to enable/disable the notifications if needed.
Case Studies
Field Service Agent – Gary Conner
Gary Conner, a Field Service Agent at X Company, requires immediate notification when a new activity is assigned to him. Upon the assignment in Siebel, Gary receives an MS Teams notification within seconds, detailing the activity type, priority, and description. This integration ensures that Gary is aware of his tasks as they arise, allowing for better time management and faster response times.
In this Recipe we are exploring above case
Pre-requisites
For Development
- MS Teams Toolkit Extension should be installed in Visual Studio Code
- Microsoft 365 Developer account with Custom app upload permission enabled (For Testing the Integration with Microsoft Teams)
- Azure Entra ID account with access to Azure services (To create the Bot using Microsoft Bot Framework)
For Usage
The user should be using the same email to login to both Siebel and MS Teams
MS Teams
We can leverage MS Teams Toolkit to setup a bot which can send notifications to users by using adaptive cards. Teams Toolkit provides boilerplate 'Proactive Notification Bot' code which we can enhance according to our scenario.
Technical Design
MS Teams Custom Bot
MS Teams Custom Bot design will be common for both the User Flows
Deliverables
We have modified the boilerplate code MS Teams Toolkit provides for creating a Proactive Notification Bot to suit our use case.
Steps
- Extract and open the folder using Visual Studio Code.
- Ensure npm version is 10.8.1 and node version is v20.16.0
- Install npm packages using npm install.
- Run npm run generate-guid (generates a unique guid to create the required Azure resources easily through a script).
- Go to the Teams Toolkit extension and Login into Microsoft 365 account. Run the 'local' script under 'Environment' section in Teams Toolkit extension.
- Login into your teams account in the window that automatically pops up and Install the Bot.
- Send a POST request to your Custom Bot for testing.The code base contains snippets to turn on the Authentication of Notifications API using Azure Entra ID Auth Token
- You can run npm run dev:teamsfx after these steps to run the Custom Bot Application without opening a chrome window
{
"user":"MS Teams user id (email id)",
"type": "Activity",
"accountName": "3 Com",
"time": "07/26/2024 03:56:03",
"url":"https://example.com/",
"description":"Test Appointment",
"priority":"1-ASAP",
"deepLinkUrl": "https://Siebel-deep-link-url"}
Siebel Setup
Siebel Server Script code
function BusComp_WriteRecord() {
try {
var httpService = TheApplication().GetService("EAI HTTP Transport");
var httpInputs = TheApplication().NewPropertySet();
var httpOutputs = TheApplication().NewPropertySet();
var notificationEndpointUrl = "https://public-ip/dns-of-vm-hosting-the-node-service:3978/api/notification";
var description = this.GetFieldValue("Description");
var priority = this.GetFieldValue("Priority");
var result = ContinueOperation;
this.ActivateField("Employee Email Address")
var email = this.GetFieldValue("Employee Email Address")
var accountName = this.GetFieldValue("Account Name");
var activityId = this.GetFieldValue("Id")
this.ActivateField("Start Time")
var start = this.GetFieldValue("Start Time")
var duration = this.GetFieldValue("Duration")
var due = this.GetFieldValue("Due")
var activityId = this.GetFieldValue("Id")
var deeplink = [Base-Siebel-Url-for-your-application] + '?SWECmd=GotoView&SWEView=Activity+List+View&SWERF=1&SWEHo=&SWEBU=1&SWEApplet0=Activity+List+Applet+With+Navigation&SWERowId0='+ activityId;
var msEmail = email;
var uid = email.split("@")[0];
if(uid != ""){
var msEmail = uid + "@custom email domain for your azure tenancy"; // special handling for changing the email ids from Siebel to follow the custom email domain for your azure tenancy
var requestBody ='{"user":"'+ msEmail+
'","accountName":"'+accountName+
'","time":"'+ start +
'","deepLinkUrl":"'+ deeplink +
'","type":"'+ "Activity" +
'","description":"'+ description +
'","priority":"'+ priority +'"}'
httpInputs.SetProperty("HTTPRequestURLTemplate", notificationEndpointUrl);
httpInputs.SetProperty("HTTPRequestMethod", "POST");
httpInputs.SetProperty("HTTPContentType", "application/json");
httpInputs.SetProperty("CharSetConversion", "UTF-8");
httpInputs.SetProperty("HTTPAccept", "*/*");
httpInputs.SetValue(requestBody);
httpService.InvokeMethod("SendReceive", httpInputs, httpOutputs);
}
} catch (e) {
TheApplication().SetProfileAttr("Error2", "Error in InvokeREST: " + e.toString());
return (CancelOperation);
}
}
Functionality
Siebel User (Field Service Agent) receives Assigned Appointment details (as a chat message) in their MS Teams application
Demo Steps
- Go To Siebel ecommunications UI(Login as any admin user) and go to Accounts Page. Install MS Teams on a mobile device and be logged in to MS Teams as the Field Service Agent.
- Choose the account you want to create the Activity for. From the second applet selector (Drop-down list), choose Activities
- Create a new Activity for the Account and add 'Description', 'Status' and 'Priority' for the Activity
- Click on the Employee column. From the MVG applet, choose the user corresponding to the MS Teams user and set them as the primary Employee and finally Click on 'Ok'.
- Save the record. After a few seconds, you will be notified about the Activity on the MS Teams application. You can click on the deep link attached in the notification message and see the Siebel UI as well


Bot Backend Flow
- On Event trigger, Siebel requests a JWT token from Azure AD by using the client ID and client secret obtained from the respective identity provider (IdP). This token is necessary to access the protected backend logic of the custom bot. (Client Id and Client secret could be stored in Siebel as environment variables and be accessed through code.
- On obtaining the JWT Token, Siebel sends a POST request to the bot’s protected notification endpoint(/api/notifications). This request includes the activity details and the email ID of the assigned user.
- The bot backend logic checks the validity of the JWT token to authorize the Siebel client to access the protected Notification API. If the token is valid, bot proceeds with the request.
- Bot retrieves the conversation reference stored during the bot installation steps (MS Teams Custom Bot Flow steps 1-3) using the user ID obtained from the POST payload.
- If the user is found in the conversation reference storage, the bot uses the sendAdaptiveCard method to send a message to the user. The bot formulates the reply message using Adaptive Cards, ensuring the message is tailored to the activity details provided by Siebel.
- Teams Client Obtains the message from the bot and sends notification to the User.
- If the user is not found (i.e., they have not installed the bot), the bot returns an error message, indicating that the user needs to install the bot app in Microsoft Teams.
Siebel Design Flows

- 'Service Admin' Creates a new Activity and assigns it to a 'Field Service Agent' in Siebel.
- Upon activity creation, Siebel requests a JWT token from Azure AD by using the client ID and client secret obtained from the respective identity provider (IdP) through a tomcat middleware service.
- On obtaining the JWT Token, Siebel(tomcat middleware) sends a POST request to the bot’s protected notification endpoint(/api/notifications). This request includes the activity details and the email ID of the assigned user.
- The bot backend logic checks the validity of the JWT token to authorize the Siebel client to access the protected Notification API. If the token is valid, bot retrieves the user's conversation reference and sends a message to the user by using Adaptive Cards. This message will be tailored to the activity details provided by Siebel.
Benefits
- Instant Notifications& Real-time Interaction within MS Teams: Field agents get immediate notifications about assigned activities. This reduces delays in communication and ensures timely updates. Agents receive instant notifications and updates directly within the MS Teams environment, where they are already working. This allows them to stay informed and collaborate with team members without needing to switch between different platforms.
- Seamless Access to Siebel Data: Providing a direct link to the Siebel record from MS Teams allows agents to quickly access relevant information about the task, customer, or case without having to navigate between applications.
- Enhanced Productivity: The integration reduces the need for agents to switch between Siebel and MS Teams by providing task notifications and direct links to relevant records, enabling them to prioritize tasks more efficiently and stay on top of important updates without losing focus.
Future Possibilities and Innovations
- Fetch Data Based on Agent's Needs: Enable agents to log in to Siebel directly through MS Teams using federated login, allowing them to retrieve and interact with Siebel data seamlessly through simple commands within the Teams environment.
- Embedded Analytics: Imagine integrating Siebel’s reporting capabilities directly within MS Teams. A field agent could view personalized dashboards or metrics on their performance or upcoming tasks directly within the Teams interface, without needing to access Siebel separately.
- Integrated Knowledge Base: The integration could evolve to provide knowledge articles directly in MS Teams based on the case or task at hand. This could help agents quickly solve issues without needing to leave Teams to search the Siebel knowledge base.
- Voice-Activated Assistance: With MS Teams already supporting voice commands, agents could interact with the bot using voice commands. They could ask for updates, query Siebel records, or even create follow-up tasks through speech, making the process more hands-free and efficient.
Notes
- Potential Downtime: Since the integration depends on both Siebel and MS Teams, any downtime or connectivity issues on either side could disrupt the flow of notifications or access to Siebel records.
- Custom Development Challenges: Since the integration is custom-built, it may require significant effort to maintain, debug, and ensure compatibility with new versions of Siebel or Teams, especially if custom APIs or connectors are used.
- MS Teams as a Communication Tool: While MS Teams excels in collaboration and communication, it cannot fully replicate the complex workflows, reporting, and analytics capabilities of Siebel. While Teams can be used for task updates and interactions, more advanced Siebel processes and flows will still need to be handled directly within Siebel.
- Compliance Risks: If the integration isn’t properly managed, there could be compliance risks, especially in industries with strict data privacy regulations (e.g., healthcare, finance). Ensuring that sensitive Siebel records are handled in accordance with legal and regulatory requirements is essential.
Conclusion
This integration of Siebel CRM with Microsoft Teams enables seamless real-time notifications, better collaboration, and improved responsiveness to business events by bridging the gap between these two platforms. By implementing this solution, organizations can enhance productivity, reduce communication inefficiencies, and streamline workflows.
Get Your Copy of the Whitepaper Here!
Find more about Storage and security explore our recipe!
Find more usecases from recipe!
For more insights or design partnerships, reach out to us at siebel_coe_grp@oracle.com
References and Additional Resources
- Bot Builder Basics
- Bot Activity Handler Concept
- Proactive Installation using Graph
- Configure Authentication in sample node web app with api
- Azure samples
- what-keeps-my-bot-secure-from-clients-impersonating-the-bot-framework-service
- bot-framework-rest-connector-authentication
- Setting up an IDCS Client App for Oracle Content Managements REST API Authentication
- OAuth 2.0 authorization with Microsoft Entra ID
- Send notifications
- NotificationOptions interface
- Teams sample code