{"id":109208,"date":"2018-11-08T07:03:16","date_gmt":"2018-11-08T15:03:16","guid":{"rendered":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/power-apps\/one-to-many-relationships-for-canvas-apps\/"},"modified":"2025-06-11T08:06:15","modified_gmt":"2025-06-11T15:06:15","slug":"one-to-many-relationships-for-canvas-apps","status":"publish","type":"post","link":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/power-apps\/one-to-many-relationships-for-canvas-apps\/","title":{"rendered":"One-to-Many Relationships for Canvas apps"},"content":{"rendered":"<p>Over the summer we made it easy to work with Many-to-One relationships.\u00a0 With a single dot you could walk across a relationship from one entity to another.\u00a0 <strong>First(Orders).Customer.Name<\/strong> is all that is needed to retrieve the Name column from the related Customer entity that is associated with the first Order.<\/p>\n<p>I\u2019m very pleased to announce that we have now added One-to-Many relationship support.\u00a0 <strong>First(Customers).Orders <\/strong>returns the table of Orders associated with the first Customer, effectively walking backward across the Many-to-One relationship.<\/p>\n<p>This makes app development over relational data much easier.\u00a0 Not only is the formula syntax easier to read and write but the related entities don\u2019t even need to be added to the app as Data Sources. <\/p>\n<h2>CDS + Canvas = Awesome<\/h2>\n<p>\nThat is our mission.\u00a0 One-to-Many is the first of many features coming in the months ahead as we enhance our support for the Common Data Service for Apps in Canvas apps.\u00a0 It is our goal to expose all of the rich functionality of CDS to Canvas authors, making CDS + Canvas a great choice for building your next relational business app.\u00a0 Features on the horizon include:<\/p>\n<ul>\n<li>Better Optionset and Two option support<\/li>\n<li>Many-to-Many relationships<\/li>\n<li>Better Polymorphic lookups<\/li>\n<li>Better data and time handling<\/li>\n<\/ul>\n<p>There will be a small amount of pain involved: supporting CDS well may require some updates to the formulas in your existing CDS apps.\u00a0 For this reason, this functionality is under an <a href=\"https:\/\/docs.microsoft.com\/en-us\/powerapps\/maker\/canvas-apps\/working-with-experimental\">Experimental switch<\/a> requiring an explicit opt-in.\u00a0 There is no impact to existing apps.\u00a0 We will slowly roll this out to everyone and will provide much more information as we go about what needs to change.\u00a0 For now, be aware that optionsets as you know them today will not work properly with this experimental switch turned on.<\/p>\n<p>As always, your feedback is invaluable to us.\u00a0 Please jump on these changes and let us know what you think of this new functionality.\u00a0 There is still time to adjust what we are delivering.\u00a0 <\/p>\n<p>Finally, remember that these features are experimental.\u00a0 They can change at any time.\u00a0 Please do not use them in production, we\u2019ll let you know what it is appropriate, the main signal being the upgrade from Experimental to Preview status.\u00a0 Please report any problems you encounter and your overall experience in the <a href=\"https:\/\/powerusers.microsoft.com\/t5\/PowerApps-Community\/ct-p\/PowerApps1\">community forum<\/a>.<\/p>\n<h2>Entity hopping with dots: Many-to-One<\/h2>\n<p>Let\u2019s dive in and take a look.\u00a0 If you check the box to install the sample data and apps when creating a new CDS database, among others it will install two related entities.\u00a0 The Reviews entity has a Many-to-One relationship with Products through the \u2018Associated Product\u2019 lookup field:<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/a6fe9549-b92d-4dd6-964b-e69b5566cd82.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"image\" border=\"0\" height=\"231\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/a6fe9549-b92d-4dd6-964b-e69b5566cd82.png\" style=\"display: inline; background-image: none;\" title=\"image\" width=\"476\"\/><\/a><\/p>\n<p>First, we\u2019ll add the Reviews entity as a data source and bind it to a Gallery control:<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/7ad46701-9473-4be1-a5b9-57536b80ddbf.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"image\" border=\"0\" height=\"535\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/7ad46701-9473-4be1-a5b9-57536b80ddbf.png\" style=\"display: inline; background-image: none;\" title=\"image\" width=\"1051\"\/><\/a><\/p>\n<p>Now, let\u2019s expand each of these items and see more information about the Product that the Review is about:<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/721cead9-028b-4ffc-8130-ae62ca62d1b2.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"image\" border=\"0\" height=\"584\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/721cead9-028b-4ffc-8130-ae62ca62d1b2.png\" style=\"display: inline; background-image: none;\" title=\"image\" width=\"1052\"\/><\/a><\/p>\n<p>Note the formulas.\u00a0 <strong>ThisItem.\u2019Associated Product\u2019 <\/strong>is the lookup field from Reviews to Products (see the entity graph above).\u00a0 We automatically expand this field into a record, making all the information about the Product available, such as the \u2018Product Image\u2019, Name, and \u2018Product Description 1\u2019.\u00a0 Notice that Label3 is bound to <strong>ThisItem.\u2019Associated Product\u2019.Name <\/strong>in the Data pane on the right hand side.\u00a0 <\/p>\n<p>A simple dot walks from the Reviews over to the Products entity.\u00a0 No Filter or LookUp function calls are required.\u00a0 We didn\u2019t even need to add the Products data source.<\/p>\n<p>Don\u2019t be concerned that we bring in more data than we should, that we are expanding lookups on everything.\u00a0 As you build your Canvas app it is being constantly analyzed to see what data you actually reference and we limit ourselves to only expand what we need.<\/p>\n<h2>Reversing the Relationship: One-to-Many<\/h2>\n<p>For every Many-to-One relationship, there is a corresponding One-to-Many when coming from the other direction.\u00a0 Making the One-to-Many relationship easily accessible is the feature we are introducing this week.<\/p>\n<p>To get started, go to the File menu, App settings, Advanced settings, scroll to end of the list, and turn this switch on:<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/44ec4c5c-e07f-4c41-976b-af973da6527e.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"image\" border=\"0\" height=\"118\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/44ec4c5c-e07f-4c41-976b-af973da6527e.png\" style=\"display: inline; background-image: none;\" title=\"image\" width=\"460\"\/><\/a><\/p>\n<p>Now, let\u2019s create a new screen and add the Products data source, again in a Gallery control:<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/06e980d0-b3f4-4a17-ae60-c7f9d1f45433.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"image\" border=\"0\" height=\"538\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/06e980d0-b3f4-4a17-ae60-c7f9d1f45433.png\" style=\"display: inline; background-image: none;\" title=\"image\" width=\"1047\"\/><\/a><\/p>\n<p>Now, let\u2019s add a second gallery to view all the Reviews for each product.\u00a0 We\u2019ll set its Items property to <strong>Gallery2.Selected.Reviews<\/strong>:<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/632d581b-ffa6-406d-8ca8-ef538310a88e.gif\"><img loading=\"lazy\" decoding=\"async\" alt=\"2018-11-07_10h15_54\" height=\"539\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/632d581b-ffa6-406d-8ca8-ef538310a88e.gif\" style=\"border-image: none; display: inline;\" title=\"2018-11-07_10h15_54\" width=\"1052\"\/><\/a><\/p>\n<p>And that\u2019s it.\u00a0 As the end user changes the selection of Product, the list of Reviews automatically updates to display the filtered list for that Product.\u00a0 No Filter function is involved.\u00a0 We didn\u2019t need to add the Reviews data source.\u00a0 Binding within the second gallery is based on the schema for Reviews.<\/p>\n<p>In summary, we can write these formulas with explanations:<\/p>\n<p><strong>First( Reviews ).\u2019Associated Product\u2019.Name<\/strong><\/p>\n<ol>\n<li>Take the first Review.<\/li>\n<li>Use the \u2018Associated Product\u2019 lookup field to walk the Many-to-One relationship over to Products.<\/li>\n<li>Return the value of the Name column from the Product.<\/li>\n<\/ol>\n<p><strong>First( First( Products ).Reviews ).Comment<\/strong>:\u00a0 <\/p>\n<ol>\n<li>Take the first Product.<\/li>\n<li>Using the \u2018Associated Product\u2019 lookup field on the Reviews entity, find all the Reviews that are associated with this Product.<\/li>\n<li>Take the first of those filtered Reviews.<\/li>\n<li>Return the value of the Comment column of the Review.<\/li>\n<\/ol>\n<h2>Northwind Traders<\/h2>\n<p>Let\u2019s now turn to a more complicated example.\u00a0 Microsoft Access ships with the well known Northwind Traders sample database.\u00a0 Let\u2019s bring that into CDS and see how it plays with relationships.\u00a0 This relationship graph is a little more complicated:<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/530af1e6-56e8-40fa-beec-0a3adffe859d.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"image\" border=\"0\" height=\"709\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/530af1e6-56e8-40fa-beec-0a3adffe859d.png\" style=\"display: inline; background-image: none;\" title=\"image\" width=\"1042\"\/><\/a><\/p>\n<p>By utilizing One-to-Many and Many-to-One relationships, we can create a basic Order entry screen.\u00a0 I\u2019ve highlighted in the graph above the entities that we will be using on this screen:<\/p>\n<p><a href=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/4084ca1e-ef7d-4145-b4e9-50eed7199124.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"image\" border=\"0\" height=\"587\" src=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/4084ca1e-ef7d-4145-b4e9-50eed7199124.png\" style=\"display: inline; background-image: none;\" title=\"image\" width=\"1042\"\/><\/a><\/p>\n<p>Let\u2019s take a closer look at each section of this screen.<\/p>\n<p><strong>Left hand gallery of Orders<\/strong><\/p>\n<ul>\n<li>Gallery control with <strong>Items = Orders<\/strong>.\u00a0 This is one of the data sources we needed to add.<\/li>\n<li>Customer name label has <strong>Text = ThisItem.Customer.Company. <\/strong> We are walking across a Many-to-One relationship to retrieve information from the Customer\u2019s entity.\u00a0 <\/li>\n<li>Order total label control <strong>Text = Sum( ThisItem.&#8217;Order Details&#8217;, Quantity * UnitPrice ) <\/strong>(wrapped in a Text function for currency format).\u00a0 We ran an aggregate function over the One-to-Many relationship from the Orders entity to the Order Details entity.\u00a0 Note that this is not yet delegable, one of the things we are working on.<\/li>\n<\/ul>\n<p><strong>Top right form for an Order\u2019s details<\/strong><\/p>\n<ul>\n<li>Form control with <strong>DataSource = Orders<\/strong> and <strong>Item =\u00a0 Gallery1.Selected<\/strong>.<\/li>\n<li>Customer data card with <strong>Default = ThisItem.Customer<\/strong>.<strong>\u00a0 <\/strong> This card is going to work with an entire record from the Customers entity.\u00a0 It contains a Combo Box control with <strong>DefaultSelectedItems = Parent.Default <\/strong>and <strong>Items = Choices( Orders.Customer ) <\/strong>which returns the full list of Customers to choose from.\u00a0 The card output the selected customer with <strong>Update = CustomerCombo.Selected<\/strong>.\u00a0 We are working with the Many-to-One relationship between Orders and Customers.<\/li>\n<li>The same is true for the Employee selection and Shipper selection.\u00a0 In the case of the Employee selection, we also added an Image control with <strong>Image = EmployeeCombo.Selected.entityimage<\/strong>.\u00a0 All of these cards and Combo Box controls are operating on the full record, a fact we can use to access any of the columns of the current selection directly.\u00a0 A bonus advantage is that as the end user changes the Employee selection, the picture will automatically update.<\/li>\n<li>The rest are standard cards on Orders columns.<\/li>\n<\/ul>\n<p><strong>Middle right list of Order Details<\/strong><\/p>\n<ul>\n<li>Gallery with <strong>Items = Gallery1.Selected.\u2019Order Details\u2019<\/strong>.<\/li>\n<li>Product details, such as the image and name, are taken from the Products table.\u00a0 The image control has <strong>Image = ThisItem.Picture<\/strong>.\u00a0 If you are keeping score, we just walked across TWO relationships: Orders One-to-Many to \u2018Order Details\u2019 and then Many-to-One to Products.\u00a0 You can walk across as many One-to-Many relationship as you like and can always end with a Many-to-One relationship.<\/li>\n<\/ul>\n<p><strong>Bottom right new item entry form for Order Details<\/strong><\/p>\n<ul>\n<li>One of our current limitations is that we can\u2019t write back through a relationship.\u00a0 We can\u2019t yet add something to the order directly.\u00a0 Instead, we have a few controls here that gather up the details of something to add to the order and then use the Patch function directly against the \u2018Order Details\u2019 entity, with the Order lookup field appropriately pointing to this Order.\u00a0 Operative word here is \u201cyet\u201d, we will be adding this support so you don\u2019t need to do this long term.\u00a0 Until now, we didn\u2019t need to add any other data sources besides Orders.<\/li>\n<\/ul>\n<h2>A big step for relational data<\/h2>\n<p>We just built a screen that:<\/p>\n<ul>\n<li>Drew information from 6 different related entities.<\/li>\n<li>Walked through multiple Many-to-One and One-to-Many relationships.<\/li>\n<li>In some casee, we walked through relationships in series such as the Orders One-to-Many to \u2018Order Details\u2019 and then Many-to-One to Products.<\/li>\n<li>No Filter or Lookup function calls were required.<\/li>\n<li>No foreign keys were referenced.\u00a0 You\u2019ll note that my relationship graphs don\u2019t even show keys, that knowledge isn\u2019t required by authors.<\/li>\n<li>We only had to add 2 data sources (Orders and \u2018Order Details\u2019).\u00a0 Long term it will be only 1 (Orders).<\/li>\n<\/ul>\n<p>We did discover some limitations along the way:<\/p>\n<ul>\n<li>Aggregate functions are not yet supported.<\/li>\n<li>Write back through the relationship is not yet supported.<\/li>\n<li>You can\u2019t walk from a Many-to-One relationship to another Many-to-One relationship yet.<\/li>\n<\/ul>\n<p>Again, key word is \u201cyet.\u201d\u00a0 \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Over the summer we made it easy to walk Many-to-One relationships.&nbsp; With a single dot you can walk across a relationship from one entity to another.&nbsp; First(Orders).Customer.<\/p>\n","protected":false},"author":86,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ms_queue_id":[],"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","_alt_title":"","ms-ems-related-posts":[],"footnotes":""},"audience":[3378],"content-type":[3424],"job-role":[],"product":[3473],"property":[],"topic":[],"coauthors":[2104],"class_list":["post-109208","post","type-post","status-publish","format-standard","hentry","audience-it-professional","content-type-news","product-power-apps"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>One-to-Many Relationships for Canvas apps - Microsoft Power Platform Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"One-to-Many Relationships for Canvas apps - Microsoft Power Platform Blog\" \/>\n<meta property=\"og:description\" content=\"Over the summer we made it easy to walk Many-to-One relationships.&nbsp; With a single dot you can walk across a relationship from one entity to another.&nbsp; First(Orders).Customer.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/power-apps\/one-to-many-relationships-for-canvas-apps\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Power Platform Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-11-08T15:03:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-11T15:06:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/a6fe9549-b92d-4dd6-964b-e69b5566cd82.png\" \/>\n<meta name=\"author\" content=\"Greg Lindhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Greg Lindhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/\"},\"author\":[{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/author\/greg-lindhorst\/\",\"@type\":\"Person\",\"@name\":\"Greg Lindhorst\"}],\"headline\":\"One-to-Many Relationships for Canvas apps\",\"datePublished\":\"2018-11-08T15:03:16+00:00\",\"dateModified\":\"2025-06-11T15:06:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/\"},\"wordCount\":1537,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/a6fe9549-b92d-4dd6-964b-e69b5566cd82.png\",\"keywords\":[\"Dataverse\",\"Formulas\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/\",\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/\",\"name\":\"One-to-Many Relationships for Canvas apps - Microsoft Power Platform Blog\",\"isPartOf\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/a6fe9549-b92d-4dd6-964b-e69b5566cd82.png\",\"datePublished\":\"2018-11-08T15:03:16+00:00\",\"dateModified\":\"2025-06-11T15:06:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/#primaryimage\",\"url\":\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/a6fe9549-b92d-4dd6-964b-e69b5566cd82.png\",\"contentUrl\":\"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/a6fe9549-b92d-4dd6-964b-e69b5566cd82.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"One-to-Many Relationships for Canvas apps\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#website\",\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/\",\"name\":\"Microsoft Power Platform Blog\",\"description\":\"Innovate with Business Apps\",\"publisher\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization\",\"name\":\"Microsoft Power Platform Blog\",\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png\",\"contentUrl\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png\",\"width\":194,\"height\":145,\"caption\":\"Microsoft Power Platform Blog\"},\"image\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/person\/dbd4cb8af4503e696f240353831f05d4\",\"name\":\"Greg Lindhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/d2e26bc357423265c4eeeb6a4ed51bd71fb29b8eced3e31f4bc1ccd5bedaf80f?s=96&d=mm&r=g0133d144d5ed416197bd3b29ccd9a59c\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d2e26bc357423265c4eeeb6a4ed51bd71fb29b8eced3e31f4bc1ccd5bedaf80f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d2e26bc357423265c4eeeb6a4ed51bd71fb29b8eced3e31f4bc1ccd5bedaf80f?s=96&d=mm&r=g\",\"caption\":\"Greg Lindhorst\"},\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/author\/gregli\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"One-to-Many Relationships for Canvas apps - Microsoft Power Platform Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/","og_locale":"en_US","og_type":"article","og_title":"One-to-Many Relationships for Canvas apps - Microsoft Power Platform Blog","og_description":"Over the summer we made it easy to walk Many-to-One relationships.&nbsp; With a single dot you can walk across a relationship from one entity to another.&nbsp; First(Orders).Customer.","og_url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/power-apps\/one-to-many-relationships-for-canvas-apps\/","og_site_name":"Microsoft Power Platform Blog","article_published_time":"2018-11-08T15:03:16+00:00","article_modified_time":"2025-06-11T15:06:15+00:00","og_image":[{"url":"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/a6fe9549-b92d-4dd6-964b-e69b5566cd82.png","type":"","width":"","height":""}],"author":"Greg Lindhorst","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Greg Lindhorst","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/#article","isPartOf":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/"},"author":[{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/author\/greg-lindhorst\/","@type":"Person","@name":"Greg Lindhorst"}],"headline":"One-to-Many Relationships for Canvas apps","datePublished":"2018-11-08T15:03:16+00:00","dateModified":"2025-06-11T15:06:15+00:00","mainEntityOfPage":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/"},"wordCount":1537,"commentCount":0,"publisher":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization"},"image":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/#primaryimage"},"thumbnailUrl":"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/a6fe9549-b92d-4dd6-964b-e69b5566cd82.png","keywords":["Dataverse","Formulas"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/","url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/","name":"One-to-Many Relationships for Canvas apps - Microsoft Power Platform Blog","isPartOf":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/#primaryimage"},"image":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/#primaryimage"},"thumbnailUrl":"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/a6fe9549-b92d-4dd6-964b-e69b5566cd82.png","datePublished":"2018-11-08T15:03:16+00:00","dateModified":"2025-06-11T15:06:15+00:00","breadcrumb":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/#primaryimage","url":"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/a6fe9549-b92d-4dd6-964b-e69b5566cd82.png","contentUrl":"https:\/\/pwrappscdn.azureedge.net\/mediahandler\/blog\/media\/PowerApps\/blog\/a6fe9549-b92d-4dd6-964b-e69b5566cd82.png"},{"@type":"BreadcrumbList","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2018\/11\/08\/one-to-many-relationships-for-canvas-apps\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/"},{"@type":"ListItem","position":2,"name":"One-to-Many Relationships for Canvas apps"}]},{"@type":"WebSite","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#website","url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/","name":"Microsoft Power Platform Blog","description":"Innovate with Business Apps","publisher":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization","name":"Microsoft Power Platform Blog","url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png","contentUrl":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png","width":194,"height":145,"caption":"Microsoft Power Platform Blog"},"image":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/person\/dbd4cb8af4503e696f240353831f05d4","name":"Greg Lindhorst","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d2e26bc357423265c4eeeb6a4ed51bd71fb29b8eced3e31f4bc1ccd5bedaf80f?s=96&d=mm&r=g0133d144d5ed416197bd3b29ccd9a59c","url":"https:\/\/secure.gravatar.com\/avatar\/d2e26bc357423265c4eeeb6a4ed51bd71fb29b8eced3e31f4bc1ccd5bedaf80f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d2e26bc357423265c4eeeb6a4ed51bd71fb29b8eced3e31f4bc1ccd5bedaf80f?s=96&d=mm&r=g","caption":"Greg Lindhorst"},"url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/author\/gregli\/"}]}},"bloginabox_animated_featured_image":null,"bloginabox_display_generated_audio":false,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Power Platform Blog","distributor_original_site_url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/109208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/users\/86"}],"replies":[{"embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/comments?post=109208"}],"version-history":[{"count":1,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/109208\/revisions"}],"predecessor-version":[{"id":131000,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/109208\/revisions\/131000"}],"wp:attachment":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/media?parent=109208"}],"wp:term":[{"taxonomy":"audience","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/audience?post=109208"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/content-type?post=109208"},{"taxonomy":"job-role","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/job-role?post=109208"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/product?post=109208"},{"taxonomy":"property","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/property?post=109208"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/topic?post=109208"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/coauthors?post=109208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}