diff --git a/addon/components/multiple-entity-selector.js b/addon/components/multiple-entity-selector.js
new file mode 100644
index 0000000000000000000000000000000000000000..bb7379bf86cd2edde29811fdee9a4917e65b7073
--- /dev/null
+++ b/addon/components/multiple-entity-selector.js
@@ -0,0 +1,41 @@
+import Component from '@ember/component';
+import injectService from 'ember-service/inject';
+import { computed } from '@ember/object';
+import { A } from '@ember/array';
+import EmberObject from '@ember/object';
+
+export default Component.extend({
+    store: injectService(),
+    entityType: '',
+    entityKey: '',
+    selectedEntities: [],
+    entities: [],
+    tableColumns: computed(function() {
+        var col = A([
+            EmberObject.create({
+            propertyName: "id",
+            title: "id"
+        }),
+        EmberObject.create({
+            propertyName: this.get('entityKey'),
+            title: this.get('entityKey')
+        })
+        ]);
+        return col;
+    }),
+  init(){
+    this._super(...arguments);
+    this._getEntities();
+  },
+
+  _getEntities() {
+    this.get('store').findAll(this.get('entityType')).then((entities) => {
+      // because this is async you need to guard against the component 
+      // being destroyed before the api call has finished because 
+      // because `this.set` will throw an error.
+      if (this.isDestroyed) { return; } 
+
+      this.set('entities', entities);
+        }
+    )}
+})
diff --git a/addon/templates/components/multiple-entity-selector.hbs b/addon/templates/components/multiple-entity-selector.hbs
new file mode 100644
index 0000000000000000000000000000000000000000..39396163e80464d76fbb730fd32a5dfbc5918e09
--- /dev/null
+++ b/addon/templates/components/multiple-entity-selector.hbs
@@ -0,0 +1,5 @@
+{{models-table
+  data=entities
+  columns=tableColumns
+  multipleSelect=true
+  selectedItems=selectedEntities}}
\ No newline at end of file
diff --git a/app/components/multiple-entity-selector.js b/app/components/multiple-entity-selector.js
new file mode 100644
index 0000000000000000000000000000000000000000..2b27f7567833be0c626bba5f4bb895ad02bd98c2
--- /dev/null
+++ b/app/components/multiple-entity-selector.js
@@ -0,0 +1 @@
+export { default } from 'ember-aws-ehipster/components/multiple-entity-selector';
\ No newline at end of file
diff --git a/tests/integration/components/multiple-entity-selector-test.js b/tests/integration/components/multiple-entity-selector-test.js
new file mode 100644
index 0000000000000000000000000000000000000000..47e00b97cbdd84467786bb35358865befb98f10b
--- /dev/null
+++ b/tests/integration/components/multiple-entity-selector-test.js
@@ -0,0 +1,26 @@
+import { module, test } from 'qunit';
+import { setupRenderingTest } from 'ember-qunit';
+import { render } from '@ember/test-helpers';
+import hbs from 'htmlbars-inline-precompile';
+
+module('Integration | Component | multiple-entity-selector', function(hooks) {
+  setupRenderingTest(hooks);
+
+  test('it renders', async function(assert) {
+    // Set any properties with this.set('myProperty', 'value');
+    // Handle any actions with this.set('myAction', function(val) { ... });
+
+    await render(hbs`{{multiple-entity-selector}}`);
+
+    assert.equal(this.element.textContent.trim(), '');
+
+    // Template block usage:
+    await render(hbs`
+      {{#multiple-entity-selector}}
+        template block text
+      {{/multiple-entity-selector}}
+    `);
+
+    assert.equal(this.element.textContent.trim(), 'template block text');
+  });
+});