Embedding iFrame in Dynamics CRM
I am trying to Embed a Domo card into our Dynamics CRM and getting the URL to read the right identifier to then filter the card down to the right records is proving difficult.
I've referred to this discussion: https://dojo.domo.com/t5/Card-Building/Filter-Page-via-URL/td-p/23967
and this discussion: https://dojo.domo.com/t5/Domo-Everywhere-Embed/Embedded-Cards-in-Salesforce-Dynamic-Filter/m-p/26993#M3073
and they've helped me to see the card in Dynamics, but it's not filtering the card to the records associated with the contact I'm viewing.
Here's my syntax so far: https://XXXXX.domo.com/embed/view/71400645?pfilters=[{"dataSetId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "column": "client_ContactId", "dataType": "string" , "operand":"IN", "values":"id"}]
The values that CRM would pass to DOMO are not being picked up properly because it's showing me all values rather than those associated. There's a setting within the Dynamics iFrame where it says "Pass record object-type code and unique identifier as parameters." that I have checked (see graphic), but how do I have domo pick up the unigue identifier to then filter the card/page? Do I need to build the card/page in a special way to have it picked up? I feel like the values part of my URL needs some attention, but I'm unsure as to how to change it.
The ideal end result is to have a page instead of the card where I show a lot of different types of stats and have that as an iFrame in Dynamics and have it filtered to just the record I'm viewing, but for now I'll settle for the card to work as intended.
Best Answer
-
Aaron,
What I did was built a Web Resource and had our developer write me a little HTML javascript to get it done. Here's the HTML:
<html><head>
<meta><meta></head>
<body style="overflow-wrap: break-word;">
<title>DOMO CRM</title>
<style type="text/css">
.embed-container {
height: 0;
margin: 20px auto;
max-width: 100%;
overflow: hidden;
padding-bottom: 56.25%;
position: relative;
}
.embed-container iframe {
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
</style>
<div id="output" class="embed-container">
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<script type="text/javascript">
$(document).ready(function() {
var ujcrmd = '';
// Test ID
// var id = "B66C8E96-9049-44BA-AA07-56D1AE14804E";
// Get parent ID (from parent window)
var id = window.parent.Xrm.Page.data.entity.getId();
// Set id2 to id minus the curly braces and then make the characters lowercase
var id2 = id.replace(/{|}/g, '').toLowerCase();
// Declare the pfilters with the dynamic sanitized id
//datasetid is the dataset from DOMO
//client_ContactId is the field within your domo card that contains the ID from the record you want to view
//id2 is the id from dynamics that should be passed to the filter in DOMO to display the record you want
var ds = '[{"dataSetId":"fbbb7d08-4644-4bde-bc58-9c1067fea6a3", "column": "client_ContactId", "dataType": "string" , "operand":"IN", "values":["' + id2 + '"]}]';
// URI encode the pfilters
var dse = encodeURI(ds);
// Create the iframe with the new URL
ujcrmd += '<iframe frameborder="0" height="300" width="300" src="https://yourdomain.domo.com:443/embed/view/71400645?pfilters=' + dse + '"></iframe>';
// Inject into #output div
document.getElementById("output").innerHTML = ujcrmd;
});
</script>
</body></html>2
Answers
-
Hey user05315!
I would recommend checking Domo's documentation on Embedding functionality here as your first step:
https://knowledge.domo.com?cid=domoembed
However, I'm not finding an answer to your direct question on my side. It may be more beneficial to reach out to your Domo account team for added support on this feature, and to let you know what can be accomplished here.
Thanks!
- Jarvis
0 -
Thank Jarvis, I originally tried what the link you referenced showed, but it wouldn't dynamically change the results in the card. I've since talked with one of our web developers and he was able to get me some javascript that builds the URL dynamically within our CRM web resource and then displays the results in our iframe. It works, but not as easy as some have said it is in Salesforce.
0 -
Hi @JaredUJZ
We're looking to do exactly the same thing in our Dynamics environment you've done in yours. Would you be willing to share what your web developer put together for you (less any sensitive information, naturally)?
Aaron
MajorDomo @ Merit Medical
**Say "Thanks" by clicking the heart in the post that helped you.
**Please mark the post that solves your problem by clicking on "Accept as Solution"0 -
Aaron,
What I did was built a Web Resource and had our developer write me a little HTML javascript to get it done. Here's the HTML:
<html><head>
<meta><meta></head>
<body style="overflow-wrap: break-word;">
<title>DOMO CRM</title>
<style type="text/css">
.embed-container {
height: 0;
margin: 20px auto;
max-width: 100%;
overflow: hidden;
padding-bottom: 56.25%;
position: relative;
}
.embed-container iframe {
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
</style>
<div id="output" class="embed-container">
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<script type="text/javascript">
$(document).ready(function() {
var ujcrmd = '';
// Test ID
// var id = "B66C8E96-9049-44BA-AA07-56D1AE14804E";
// Get parent ID (from parent window)
var id = window.parent.Xrm.Page.data.entity.getId();
// Set id2 to id minus the curly braces and then make the characters lowercase
var id2 = id.replace(/{|}/g, '').toLowerCase();
// Declare the pfilters with the dynamic sanitized id
//datasetid is the dataset from DOMO
//client_ContactId is the field within your domo card that contains the ID from the record you want to view
//id2 is the id from dynamics that should be passed to the filter in DOMO to display the record you want
var ds = '[{"dataSetId":"fbbb7d08-4644-4bde-bc58-9c1067fea6a3", "column": "client_ContactId", "dataType": "string" , "operand":"IN", "values":["' + id2 + '"]}]';
// URI encode the pfilters
var dse = encodeURI(ds);
// Create the iframe with the new URL
ujcrmd += '<iframe frameborder="0" height="300" width="300" src="https://yourdomain.domo.com:443/embed/view/71400645?pfilters=' + dse + '"></iframe>';
// Inject into #output div
document.getElementById("output").innerHTML = ujcrmd;
});
</script>
</body></html>2 -
Perfect!
Yes, I'm sure this will be so helpful. I'll reach out if I have more questions.
I owe you lunch!
Aaron
MajorDomo @ Merit Medical
**Say "Thanks" by clicking the heart in the post that helped you.
**Please mark the post that solves your problem by clicking on "Accept as Solution"0
Categories
- All Categories
- 1.8K Product Ideas
- 1.8K Ideas Exchange
- 1.5K Connect
- 1.2K Connectors
- 300 Workbench
- 6 Cloud Amplifier
- 8 Federated
- 2.9K Transform
- 100 SQL DataFlows
- 616 Datasets
- 2.2K Magic ETL
- 3.9K Visualize
- 2.5K Charting
- 738 Beast Mode
- 57 App Studio
- 40 Variables
- 685 Automate
- 176 Apps
- 452 APIs & Domo Developer
- 47 Workflows
- 10 DomoAI
- 36 Predict
- 15 Jupyter Workspaces
- 21 R & Python Tiles
- 394 Distribute
- 113 Domo Everywhere
- 275 Scheduled Reports
- 6 Software Integrations
- 124 Manage
- 121 Governance & Security
- 8 Domo Community Gallery
- 38 Product Releases
- 10 Domo University
- 5.4K Community Forums
- 40 Getting Started
- 30 Community Member Introductions
- 108 Community Announcements
- 4.8K Archive