Imagine managing an SFMC account filled with numerous Data Extensions and complex folder hierarchies. Locating a specific Data Extension, even when its name is known, can be quite challenging. While there are existing tools (Chrome extensions) to assist in this task, they often require additional configurations.
Let’s develop an internal solution called ‘Where Is My DE’, a custom SFMC app designed to pinpoint the exact location of any data extension (DE) within your account. No more endless scrolling or guesswork—simply input the DE’s name or external key, and let the magic happen. 🎩✨
Develop the solution within a Cloud Page
Let’s start by creating a simple app on a CloudPage by proceeding following steps:
Open Web Studio and navigate to CloudPages.
If necessary, create a new collection by clicking the “Create Collection” button in the top-right corner. Alternatively, use an existing collection.
Within the collection page, click the “Add Content” button.
From the dropdown menu, select “Landing Page” and provide a name (e.g., “Script Studio”) along with a site key.
Choose the “Blank” layout and click “Save”.
A landing page with the specified name will be created. Drag and drop an HTML block from the left side.
Paste the full code into this HTML block, then click “Save” followed by “Schedule/Publish”. (Discover the source code located at the conclusion of the post, support for more article like this by 'Buy Me a Coffee')
To view the cloud page, either click the “URL” in the top-left corner of the UI or copy the URL and open it in a separate tab.

Construct the above web page as a Marketing Cloud App
Navigate to the main Setup and then to Platform Tools > Installed Packages.
On the page displaying all packages, click “New” to create a new package.
Provide a name for the package and describe its function. Keep in mind that this name and description will only be visible to administrators who have access to the setup in Salesforce Marketing Cloud (eg: Where Is My DE)
In the Components section, click “Add Component” and select a Marketing Cloud App.

Now you will need to Set Marketing Cloud App Properties:
Name – the name of your app which will be visible for all users
Description – description of what your app does
Login Endpoint – the external URL of the CloudPage you created and published earlier
Logout Endpoint – use the same URL as above
Once your app is saved, log out of Marketing Cloud and log back in, to see your app in the main menu, under the AppExchange icon, from where you can launch it:

Access and Sharing
Similar to other advanced packages, you have the ability to authorize the use of packages installed from the main business units to various other units within your organization. Additionally, you can select which users have the app access and from which business units they can use it. In essence, with just a few simple steps, you can:
Grant app access to every user across all Business Units,
Specify particular Business Units to automatically allow access for all their current and future users,
Or identify specific users and determine the Business Units where they are permitted to use the app.
Here’s a step-by-step guide on Licensing for Enhanced Packages:

To manage user licensing for any package:
Access Tab: In the detailed view, click the “Access” tab.
Search Business Unit: Locate the business unit to grant or restrict licensing. If you have only one business unit, the search field and tree are hidden.
License Specific Users: Add licensing for users within the selected business unit.
Server-to-Server Integrations (if applicable):
To assign licenses or make API requests on behalf of this business unit, enable the package’s server-to-server integration.
Note: You can assign licenses only if the package contains another component in addition to the server-to-server API integration.
License All Users: Choose to license all current and future users in the business unit.
Global Integration (Server-to-Server):
Enable the package’s server-to-server integration for all business units in your account.
This option isn’t shown for other integration types.
Account Permissions:
If the option isn’t shown, you lack permission to administer installed packages in all business units. Contact your account administrator for access.
Key Features of 'Where is My DE'
🔍 Find Any Data Extension: Just enter the name or external key, and voilà!
🗂️ Precise Results: It swiftly reveals the location where your DE resides.
🌐 Cloud-Hosted: App lives on a cloud page, ensuring seamless accessibility from anywhere.
🛠️ No Additional Settings: Forget about cumbersome Chrome extensions; this app is ready to go!
Source Code
<style>
.container {
font-family: 'Arial', sans-serif;
margin: 5px 0;
padding: 0;
//background-color: #f4f4f4;
display: flex;
align-items: center;
justify-content: center;
//height: 100vh;
height: auto;
}
#search-container {
background-color: #fff;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
padding: 20px;
text-align: center;
max-width: 700px;
width: 100%;
}
.row{
max-width: 400px;
width: 100%;
}
label {
display: block;
margin-bottom: 10px;
font-weight: bold;
color: #333;
}
select, input[type=text] {
width: 70%;
padding: 10px;
margin-bottom: 15px;
box-sizing: border-box;
border: 1px solid #ddd;
border-radius: 5px;
}
input[type=submit] {
background-color: #007BFF;
color: #fff;
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
}
input[type=submit]:hover {
background-color: #2e6da4;
//background-color: #045930;
}
.answerContainer {
//display: none;
margin-top: 20px;
}
.answer {
background-color: #d4edda;
border: 1px solid #c3e6cb;
color: #155724;
padding: 10px 10px 30px 10px;
border-radius: 5px;
}
.error {
background-color: #edd4d4;
border: 1px solid #e6c3c3;
color: #571515;
padding: 10px;
border-radius: 5px;
}
</style>
<div class="container">
<div id="search-container">
<form action="%%=RequestParameter('PAGEURL')=%%" method="post">
<label for="search-type">search by:</label>
<select name="DEprop">
<option value="Name">Name</option>
<option value="CustomerKey">External Key</option>
</select>
<label for="search-input">equals</label>
<input type="text" name="DEval" placeholder="Enter your search string">
<br>
<input type="submit" value="Search">
</form>
<script runat="server">
Platform.Load("core","1.1.5");
var DEprop = Request.GetQueryStringParameter("DEprop");
var DEval = Request.GetQueryStringParameter("DEval");
var FindDE = DataExtension.Retrieve({Property:DEprop,SimpleOperator:"equals",Value:DEval});
var FolderID = FindDE[0].CategoryID;
var DEname = FindDE[0].Name;
var list = [];
list.push(DEname);
var path = function(id) {
if (id> 0) {
var results = Folder.Retrieve({Property:"ID",SimpleOperator:"equals",Value:id});
list.unshift(results [0].Name);
return path(results[0].ParentFolder.ID);
} else {
return id;
}
};
path(FolderID);
Write("<div class=answerContainer>");
if(list.length > 1){
Write("<div class=answer>");
Write("<br><b>Folder Path</b><br><br>")
Write("<span>");
Write(list.join(" > "));
Write("</span>")
Write("</div>")
}
else if(DEval != null){
Write("<br><div class=error><b>Sorry! DE is not found.</b></div>")
}
Write("</div>")
</script>
</div>
</div>
Support for more similar contents by 'Buy Me a Coffee'
#happycoding!