diff --git a/app/components/citation-search/PubMedSearch.jsx b/app/components/citation-search/PubMedSearch.jsx
index f14a19de4de967b6590107668c2a3d4db4aa1180..e81ef4dffe8e5c761d7020a14eaab014c4f49629 100755
--- a/app/components/citation-search/PubMedSearch.jsx
+++ b/app/components/citation-search/PubMedSearch.jsx
@@ -167,20 +167,36 @@ class PubMedSearch extends React.Component {
         journalId: journal.id,
         meta: {
           title: result.title,
-          articleIds: [
+          volume: result.volume,
+          issue: result.issue,
+          location: {
+            fpage: result.pages.split('-')[0],
+            lpage: result.pages.split('-').pop(),
+            elocationId: result.elocationid,
+          },
+          publicationDates: [
             {
-              pubIdType: 'pmid',
-              id: result.uid,
+              type: !result.volume && !result.pages ? 'epub' : 'ppub',
+              date,
             },
           ],
-          publicationDates: [
+          articleIds: [
             {
-              type: 'ppub',
-              date,
+              pubIdType: 'pmid',
+              id: result.uid,
             },
           ],
         },
       }
+      if (
+        result.articleids &&
+        result.articleids.find(i => i.idtype === 'doi')
+      ) {
+        citationData.meta.articleIds.push({
+          pubIdType: 'doi',
+          id: result.articleids.find(i => i.idtype === 'doi').value,
+        })
+      }
       this.props.citationData(citationData)
     }
   }
diff --git a/app/components/submission-wizard/CreateSetupPage.jsx b/app/components/submission-wizard/CreateSetupPage.jsx
index 9405aa88b7229a408207c5eee93f41c32a0e371b..e3650b138714cb7c98dc876513a1d58bca9bce00 100755
--- a/app/components/submission-wizard/CreateSetupPage.jsx
+++ b/app/components/submission-wizard/CreateSetupPage.jsx
@@ -5,22 +5,20 @@ import { SplitPage, InfoPanel, StepPanel } from '../ui'
 import PubMedSearch from '../citation-search'
 import CreateHeader from './CreateHeader'
 import CreateInfo from './CreateInfo'
-import { CREATE_MANUSCRIPT, UPDATE_MANUSCRIPT, CREATE_NOTE } from './operations'
+import { CREATE_MANUSCRIPT, CREATE_NOTE } from './operations'
 
 const manuscriptSetup = async (
   citationData,
   createNote,
   createManuscript,
-  updateManuscript,
   history,
 ) => {
   if (citationData) {
     const { note, ...citation } = citationData
-    const created = await createManuscript()
-    const { id } = created.data.createManuscript
-    await updateManuscript({
-      variables: { data: { id, ...citation } },
+    const created = await createManuscript({
+      variables: { data: { ...citation } },
     })
+    const { id } = created.data.createManuscript
     if (note) {
       await createNote({
         variables: {
@@ -42,12 +40,7 @@ const showInfo = e => {
   e.currentTarget.children[1].classList.toggle('hidden')
 }
 
-const CreateSetup = ({
-  history,
-  createNote,
-  createManuscript,
-  updateManuscript,
-}) => (
+const CreateSetup = ({ history, createNote, createManuscript }) => (
   <SplitPage>
     <StepPanel>
       <div>
@@ -55,13 +48,7 @@ const CreateSetup = ({
         <H2>Citation</H2>
         <PubMedSearch
           citationData={d =>
-            manuscriptSetup(
-              d,
-              createNote,
-              createManuscript,
-              updateManuscript,
-              history,
-            )
+            manuscriptSetup(d, createNote, createManuscript, history)
           }
         />
       </div>
@@ -79,6 +66,5 @@ const CreateSetup = ({
 
 export default compose(
   graphql(CREATE_MANUSCRIPT, { name: 'createManuscript' }),
-  graphql(UPDATE_MANUSCRIPT, { name: 'updateManuscript' }),
   graphql(CREATE_NOTE, { name: 'createNote' }),
 )(CreateSetup)
diff --git a/app/components/submission-wizard/operations.js b/app/components/submission-wizard/operations.js
index 13ebd2bd2e5c53a1a2f0c0bec4a5e966fdfc64fa..1dee4742e82f70c0acc7a42ec8d8dd0f8f53802a 100644
--- a/app/components/submission-wizard/operations.js
+++ b/app/components/submission-wizard/operations.js
@@ -110,9 +110,23 @@ export const REPLACE_MANUSCRIPT = gql`
 `
 
 export const CREATE_MANUSCRIPT = gql`
-  mutation CreateManuscript {
-    createManuscript {
+  mutation CreateManuscript($data: CreateManuscriptInput!) {
+    createManuscript(data: $data) {
       id
+      status
+      formState
+      meta {
+        title
+        articleIds {
+          pubIdType
+          id
+        }
+        publicationDates {
+          type
+          date
+        }
+        unmatchedJournal
+      }
     }
   }
 `
diff --git a/server/xpub-model/entities/manuscript/data-access.js b/server/xpub-model/entities/manuscript/data-access.js
index 1bc7a8049d2a2329b6bc02a958d48b99a0c73b83..6b68dfcef3c66ca9ab895bec2497a4c883f1ff73 100644
--- a/server/xpub-model/entities/manuscript/data-access.js
+++ b/server/xpub-model/entities/manuscript/data-access.js
@@ -67,7 +67,14 @@ class Manuscript extends EpmcBaseModel {
         },
         'meta,volume': { type: ['string', 'null'] },
         'meta,issue': { type: ['string', 'null'] },
-        'meta,location': { type: ['string', 'null'] },
+        'meta,location': {
+          type: ['object', 'null'],
+          properties: {
+            fpage: { type: ['string', 'null'] },
+            lpage: { type: ['string', 'null'] },
+            elocationId: { type: ['string', 'null'] },
+          },
+        },
         'meta,fundingGroup': {
           type: ['array', 'null'],
           items: {
diff --git a/server/xpub-server/entities/manuscript/resolvers.js b/server/xpub-server/entities/manuscript/resolvers.js
index 4bf654766c21aaef6cc0dc63dfad7b837a072c84..77ff5a0e6e2097f917d6d398c8183f608c36a4e7 100644
--- a/server/xpub-server/entities/manuscript/resolvers.js
+++ b/server/xpub-server/entities/manuscript/resolvers.js
@@ -61,13 +61,13 @@ const resolvers = {
   },
 
   Mutation: {
-    async createManuscript(_, vars, { user }) {
+    async createManuscript(_, { data }, { user }) {
       if (!user) {
         throw new Error('Not logged in')
       }
 
       const organizationId = await OrganizationManager.getEuropePMCPlusID()
-      const saved = await ManuscriptManager.create(user, organizationId)
+      const saved = await ManuscriptManager.create(data, user, organizationId)
       logger.debug('saved: ', saved)
       return saved
     },
diff --git a/server/xpub-server/entities/manuscript/typeDefs.graphqls b/server/xpub-server/entities/manuscript/typeDefs.graphqls
index ade791d6d2707d3815332b25cf127d3643e7a7fe..52d1535fe132368e03ecec67452c4b5fc3f4580c 100644
--- a/server/xpub-server/entities/manuscript/typeDefs.graphqls
+++ b/server/xpub-server/entities/manuscript/typeDefs.graphqls
@@ -30,7 +30,7 @@ extend type Query {
 }
 
 extend type Mutation {
-  createManuscript: Manuscript!
+  createManuscript(data: CreateManuscriptInput!): Manuscript!
   deleteManuscript(id: ID!): Boolean!
   replaceManuscript(keepId: ID!, throwId: ID!): Boolean!
   updateManuscript(data: ManuscriptInput!): Manuscript!
@@ -47,8 +47,16 @@ input ManuscriptInput {
   meta: ManuscriptMetaInput
 }
 
+input CreateManuscriptInput {
+  journalId: ID
+  meta: ManuscriptMetaInput
+}
+
 input ManuscriptMetaInput {
   title: String
+  volume: String
+  issue: String
+  location: [LocationInput]
   articleIds: [ArticleIdInput]
   publicationDates: [MetaDateInput]
   fundingGroup: [FundingGroupInput]
@@ -56,6 +64,12 @@ input ManuscriptMetaInput {
   unmatchedJournal: String
 }
 
+input LocationInput {
+  fpage: String
+  lpage: String
+  elocationId: String
+}
+
 input ArticleIdInput {
   pubIdType: String
   id: String
diff --git a/server/xpub-server/schema/epmc.graphqls b/server/xpub-server/schema/epmc.graphqls
index c6f545de4b44ceb182a1a854acd833605b9708fb..744ad545397016fa518253d84f20b7122bd3dad3 100644
--- a/server/xpub-server/schema/epmc.graphqls
+++ b/server/xpub-server/schema/epmc.graphqls
@@ -33,14 +33,9 @@ extend type ManuscriptMeta {
   unmatchedJournal: String
 }
 
-union Location = Pages | Elocation
-
-type Pages {
+type Location {
   fpage: String
   lpage: String
-}
-
-type Elocation {
   elocationId: String
 }