How to publish items after pipeline is finished?How to add sitecore items with different language version by using Data Exchange frameworkRun Pipeline Batch button disabledGetting errors in Apply Mapping Pipeline Step when running pipeline batchSitecore Data Exchange Framework - Pipeline step to execute after Update Sitecore Item Pipeline StepDon't Index An Item In DEF Until All Items Have Been AddedPipeline Step to Resolve Target ItemCustom Pipeline Step never calledEmpty Pipeline Batch Log file after runningRESTful provider Pipeline Batch error: “One or more errors occurred”Batch Pipeline to sync contact

Multi tool use
Multi tool use

Plotting with different color for a single curve

Is my Rep in Stack-Exchange Form?

How come I was asked by a CBP officer why I was in the US?

Did Karl Marx ever use any example that involved cotton and dollars to illustrate the way capital and surplus value were generated?

Is there any evidence that the small canisters (10 liters) of 95% oxygen actually help with altitude sickness?

Why do some professors with PhDs leave their professorships to teach high school?

Do French speakers not use the subjunctive informally?

Links to webpages in books

What do you call a weak person's act of taking on bigger opponents?

Impossible darts scores

Can the negators "jamais, rien, personne, plus, ni, aucun" be used in a single sentence?

What kind of wire should I use to pigtail an outlet?

Why do textbooks often include the solutions to odd or even numbered problems but not both?

Is it damaging to turn off a small fridge for two days every week?

Character discovers anti gravity emitters, flies a shipping container into space and docks with space station

Analog is Obtuse!

Unusual mail headers, evidence of an attempted attack. Have I been pwned?

Dimensions of list used in test

How to determine what is the correct level of detail when modelling?

First-year PhD giving a talk among well-established researchers in the field

Through the Looking-Glass

What happens when I sacrifice a creature when my Teysa Karlov is on the battlefield?

A player is constantly pestering me about rules, what do I do as a DM?

No IMPLICIT_CONVERSION warning in this query plan



How to publish items after pipeline is finished?


How to add sitecore items with different language version by using Data Exchange frameworkRun Pipeline Batch button disabledGetting errors in Apply Mapping Pipeline Step when running pipeline batchSitecore Data Exchange Framework - Pipeline step to execute after Update Sitecore Item Pipeline StepDon't Index An Item In DEF Until All Items Have Been AddedPipeline Step to Resolve Target ItemCustom Pipeline Step never calledEmpty Pipeline Batch Log file after runningRESTful provider Pipeline Batch error: “One or more errors occurred”Batch Pipeline to sync contact






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








7















I've utilized Data Exchange Framework and built pipeline batches.



Now it's unclear how the created/updated items can be published automatically. I did not find any publishing pipeline steps or even mention of publishing stuff in Sitecore.DataExchange. Publishing seems to be an essential step within pipeline after pulling data but looks like DEF is not responsible for that.



So, what is the right way of doing automatic publish when DEF is used?










share|improve this question






























    7















    I've utilized Data Exchange Framework and built pipeline batches.



    Now it's unclear how the created/updated items can be published automatically. I did not find any publishing pipeline steps or even mention of publishing stuff in Sitecore.DataExchange. Publishing seems to be an essential step within pipeline after pulling data but looks like DEF is not responsible for that.



    So, what is the right way of doing automatic publish when DEF is used?










    share|improve this question


























      7












      7








      7


      2






      I've utilized Data Exchange Framework and built pipeline batches.



      Now it's unclear how the created/updated items can be published automatically. I did not find any publishing pipeline steps or even mention of publishing stuff in Sitecore.DataExchange. Publishing seems to be an essential step within pipeline after pulling data but looks like DEF is not responsible for that.



      So, what is the right way of doing automatic publish when DEF is used?










      share|improve this question
















      I've utilized Data Exchange Framework and built pipeline batches.



      Now it's unclear how the created/updated items can be published automatically. I did not find any publishing pipeline steps or even mention of publishing stuff in Sitecore.DataExchange. Publishing seems to be an essential step within pipeline after pulling data but looks like DEF is not responsible for that.



      So, what is the right way of doing automatic publish when DEF is used?







      data-exchange-framework






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jun 7 at 13:25









      Gatogordo

      13.1k2 gold badges18 silver badges66 bronze badges




      13.1k2 gold badges18 silver badges66 bronze badges










      asked Jun 7 at 12:26









      Igor EvstratovIgor Evstratov

      1383 bronze badges




      1383 bronze badges




















          1 Answer
          1






          active

          oldest

          votes


















          19














          You can add a custom pipeline step to perform the publishing. Below is an example of one that can publish either a specific item (e.g. the root item below which all your DEF items were imported) or an item in the pipeline context (e.g. each item as it's imported).



          As with all custom pipeline steps, you'll need to perform the following steps:



          1. Add a custom pipeline step template

          2. Add a plugin for settings

          3. Add a pipeline step converter

          4. Add a pipeline step processor

          5. Update the standard values of your template to reference your step converter and processor

          1. Create your template



          1. Create a new template called Publish Item Pipeline Step

            • I created mine at /sitecore/templates/Data Exchange/Providers/Sitecore/Pipeline Steps/Publish Item Pipeline Step


          2. Add /sitecore/templates/Data Exchange/Framework/Pipeline Steps/Base Pipeline Steps/Base Pipeline Step as a base template

          3. Add fields


            • EndpointFrom

              • Type: Droptree

              • Source: query:./ancestor-or-self::*[@@templateid='327A381B-59F8-4E88-B331-BEBC7BD87E4E']//descendant-or-self::*[@@templateid='CAADA2F1-1D71-452A-87BF-A3AE335CA169']



            • Item

              • Type: Droptree

              • Short Description: The exact item to publish. A value in this field will override the Item Location field.



            • ItemLocation

              • Type: Droplink

              • Source: DD61BBDB-CF41-40F6-9923-3031C7AB47C8

              • Short Description: Location within the pipeline's context of the item to publish



            • Publishing Targets

              • Type: Checklist

              • Source: /sitecore/system/Publishing targets



            • Publish Subitems

              • Type: Checkbox



          2. Add plugin



          using Sitecore.DataExchange;
          using Sitecore.Services.Core.Model;

          public class PublishItemSettings : IPlugin

          public ItemModel ItemModel get; set;
          public string[] TargetDatabaseNames get; set;
          public bool PublishSubitems get; set;



          3. Add pipeline step converter



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.DataExchange;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Converters.PipelineSteps;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Repositories;
          using Sitecore.Services.Core.Model;

          [SupportedIds("YOUR-TEMPLATE-ID")]
          public class PublishItemPipelineStepConverter : BasePipelineStepConverter

          public PublishItemPipelineStepConverter(IItemModelRepository repository) : base(repository)

          private void AddPublishItemSettings(ItemModel source, PipelineStep pipelineStep)


          private void AddDataLocationSettings(ItemModel source, PipelineStep pipelineStep)

          if (pipelineStep == null)

          throw new ArgumentNullException(nameof(pipelineStep));


          var settings = new DataLocationSettings

          DataLocation = GetGuidValue(source, "ItemLocation")
          ;
          pipelineStep.AddPlugin(settings);


          private void AddEndpointSettings(ItemModel source, PipelineStep pipelineStep)

          var settings = new EndpointSettings();
          var endpoint = ConvertReferenceToModel<Endpoint>(source, "EndpointFrom");
          if (endpoint != null)

          settings.EndpointFrom = endpoint;


          pipelineStep.AddPlugin(settings);


          protected override void AddPlugins(ItemModel source, PipelineStep pipelineStep)

          this.AddPublishItemSettings(source, pipelineStep);
          this.AddDataLocationSettings(source, pipelineStep);
          this.AddEndpointSettings(source, pipelineStep);




          4. Add pipeline step processor



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.Data;
          using Sitecore.Data.Items;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Contexts;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Providers.Sc.Extensions;
          using Sitecore.DataExchange.Providers.Sc.Processors.PipelineSteps;
          using Sitecore.Publishing;
          using Sitecore.Services.Core.Diagnostics;
          using Sitecore.Services.Core.Model;

          [RequiredPipelineStepPlugins(typeof(PublishItemSettings), typeof(DataLocationSettings), typeof(EndpointSettings))]
          public class PublishItemPipelineStepProcessor : UpdateSitecoreItemStepProcessor

          protected override void ProcessPipelineStep(PipelineStep pipelineStep, PipelineContext pipelineContext, ILogger logger)




          5. Update standard values



          1. In Sitecore, navigate to the standard values of your custom pipeline step template you created back in step 1

          2. Populate the Converter Type and Processor Type fields with your custom types, for example:

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepConverter,Custom.DataExchange

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepProcessor,Custom.DataExchange






          share|improve this answer

























          • Thank you for sharing your approach with codes! Makes perfect sense for me.

            – Igor Evstratov
            Jun 8 at 15:55













          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "664"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsitecore.stackexchange.com%2fquestions%2f19237%2fhow-to-publish-items-after-pipeline-is-finished%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          19














          You can add a custom pipeline step to perform the publishing. Below is an example of one that can publish either a specific item (e.g. the root item below which all your DEF items were imported) or an item in the pipeline context (e.g. each item as it's imported).



          As with all custom pipeline steps, you'll need to perform the following steps:



          1. Add a custom pipeline step template

          2. Add a plugin for settings

          3. Add a pipeline step converter

          4. Add a pipeline step processor

          5. Update the standard values of your template to reference your step converter and processor

          1. Create your template



          1. Create a new template called Publish Item Pipeline Step

            • I created mine at /sitecore/templates/Data Exchange/Providers/Sitecore/Pipeline Steps/Publish Item Pipeline Step


          2. Add /sitecore/templates/Data Exchange/Framework/Pipeline Steps/Base Pipeline Steps/Base Pipeline Step as a base template

          3. Add fields


            • EndpointFrom

              • Type: Droptree

              • Source: query:./ancestor-or-self::*[@@templateid='327A381B-59F8-4E88-B331-BEBC7BD87E4E']//descendant-or-self::*[@@templateid='CAADA2F1-1D71-452A-87BF-A3AE335CA169']



            • Item

              • Type: Droptree

              • Short Description: The exact item to publish. A value in this field will override the Item Location field.



            • ItemLocation

              • Type: Droplink

              • Source: DD61BBDB-CF41-40F6-9923-3031C7AB47C8

              • Short Description: Location within the pipeline's context of the item to publish



            • Publishing Targets

              • Type: Checklist

              • Source: /sitecore/system/Publishing targets



            • Publish Subitems

              • Type: Checkbox



          2. Add plugin



          using Sitecore.DataExchange;
          using Sitecore.Services.Core.Model;

          public class PublishItemSettings : IPlugin

          public ItemModel ItemModel get; set;
          public string[] TargetDatabaseNames get; set;
          public bool PublishSubitems get; set;



          3. Add pipeline step converter



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.DataExchange;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Converters.PipelineSteps;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Repositories;
          using Sitecore.Services.Core.Model;

          [SupportedIds("YOUR-TEMPLATE-ID")]
          public class PublishItemPipelineStepConverter : BasePipelineStepConverter

          public PublishItemPipelineStepConverter(IItemModelRepository repository) : base(repository)

          private void AddPublishItemSettings(ItemModel source, PipelineStep pipelineStep)


          private void AddDataLocationSettings(ItemModel source, PipelineStep pipelineStep)

          if (pipelineStep == null)

          throw new ArgumentNullException(nameof(pipelineStep));


          var settings = new DataLocationSettings

          DataLocation = GetGuidValue(source, "ItemLocation")
          ;
          pipelineStep.AddPlugin(settings);


          private void AddEndpointSettings(ItemModel source, PipelineStep pipelineStep)

          var settings = new EndpointSettings();
          var endpoint = ConvertReferenceToModel<Endpoint>(source, "EndpointFrom");
          if (endpoint != null)

          settings.EndpointFrom = endpoint;


          pipelineStep.AddPlugin(settings);


          protected override void AddPlugins(ItemModel source, PipelineStep pipelineStep)

          this.AddPublishItemSettings(source, pipelineStep);
          this.AddDataLocationSettings(source, pipelineStep);
          this.AddEndpointSettings(source, pipelineStep);




          4. Add pipeline step processor



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.Data;
          using Sitecore.Data.Items;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Contexts;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Providers.Sc.Extensions;
          using Sitecore.DataExchange.Providers.Sc.Processors.PipelineSteps;
          using Sitecore.Publishing;
          using Sitecore.Services.Core.Diagnostics;
          using Sitecore.Services.Core.Model;

          [RequiredPipelineStepPlugins(typeof(PublishItemSettings), typeof(DataLocationSettings), typeof(EndpointSettings))]
          public class PublishItemPipelineStepProcessor : UpdateSitecoreItemStepProcessor

          protected override void ProcessPipelineStep(PipelineStep pipelineStep, PipelineContext pipelineContext, ILogger logger)




          5. Update standard values



          1. In Sitecore, navigate to the standard values of your custom pipeline step template you created back in step 1

          2. Populate the Converter Type and Processor Type fields with your custom types, for example:

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepConverter,Custom.DataExchange

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepProcessor,Custom.DataExchange






          share|improve this answer

























          • Thank you for sharing your approach with codes! Makes perfect sense for me.

            – Igor Evstratov
            Jun 8 at 15:55















          19














          You can add a custom pipeline step to perform the publishing. Below is an example of one that can publish either a specific item (e.g. the root item below which all your DEF items were imported) or an item in the pipeline context (e.g. each item as it's imported).



          As with all custom pipeline steps, you'll need to perform the following steps:



          1. Add a custom pipeline step template

          2. Add a plugin for settings

          3. Add a pipeline step converter

          4. Add a pipeline step processor

          5. Update the standard values of your template to reference your step converter and processor

          1. Create your template



          1. Create a new template called Publish Item Pipeline Step

            • I created mine at /sitecore/templates/Data Exchange/Providers/Sitecore/Pipeline Steps/Publish Item Pipeline Step


          2. Add /sitecore/templates/Data Exchange/Framework/Pipeline Steps/Base Pipeline Steps/Base Pipeline Step as a base template

          3. Add fields


            • EndpointFrom

              • Type: Droptree

              • Source: query:./ancestor-or-self::*[@@templateid='327A381B-59F8-4E88-B331-BEBC7BD87E4E']//descendant-or-self::*[@@templateid='CAADA2F1-1D71-452A-87BF-A3AE335CA169']



            • Item

              • Type: Droptree

              • Short Description: The exact item to publish. A value in this field will override the Item Location field.



            • ItemLocation

              • Type: Droplink

              • Source: DD61BBDB-CF41-40F6-9923-3031C7AB47C8

              • Short Description: Location within the pipeline's context of the item to publish



            • Publishing Targets

              • Type: Checklist

              • Source: /sitecore/system/Publishing targets



            • Publish Subitems

              • Type: Checkbox



          2. Add plugin



          using Sitecore.DataExchange;
          using Sitecore.Services.Core.Model;

          public class PublishItemSettings : IPlugin

          public ItemModel ItemModel get; set;
          public string[] TargetDatabaseNames get; set;
          public bool PublishSubitems get; set;



          3. Add pipeline step converter



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.DataExchange;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Converters.PipelineSteps;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Repositories;
          using Sitecore.Services.Core.Model;

          [SupportedIds("YOUR-TEMPLATE-ID")]
          public class PublishItemPipelineStepConverter : BasePipelineStepConverter

          public PublishItemPipelineStepConverter(IItemModelRepository repository) : base(repository)

          private void AddPublishItemSettings(ItemModel source, PipelineStep pipelineStep)


          private void AddDataLocationSettings(ItemModel source, PipelineStep pipelineStep)

          if (pipelineStep == null)

          throw new ArgumentNullException(nameof(pipelineStep));


          var settings = new DataLocationSettings

          DataLocation = GetGuidValue(source, "ItemLocation")
          ;
          pipelineStep.AddPlugin(settings);


          private void AddEndpointSettings(ItemModel source, PipelineStep pipelineStep)

          var settings = new EndpointSettings();
          var endpoint = ConvertReferenceToModel<Endpoint>(source, "EndpointFrom");
          if (endpoint != null)

          settings.EndpointFrom = endpoint;


          pipelineStep.AddPlugin(settings);


          protected override void AddPlugins(ItemModel source, PipelineStep pipelineStep)

          this.AddPublishItemSettings(source, pipelineStep);
          this.AddDataLocationSettings(source, pipelineStep);
          this.AddEndpointSettings(source, pipelineStep);




          4. Add pipeline step processor



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.Data;
          using Sitecore.Data.Items;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Contexts;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Providers.Sc.Extensions;
          using Sitecore.DataExchange.Providers.Sc.Processors.PipelineSteps;
          using Sitecore.Publishing;
          using Sitecore.Services.Core.Diagnostics;
          using Sitecore.Services.Core.Model;

          [RequiredPipelineStepPlugins(typeof(PublishItemSettings), typeof(DataLocationSettings), typeof(EndpointSettings))]
          public class PublishItemPipelineStepProcessor : UpdateSitecoreItemStepProcessor

          protected override void ProcessPipelineStep(PipelineStep pipelineStep, PipelineContext pipelineContext, ILogger logger)




          5. Update standard values



          1. In Sitecore, navigate to the standard values of your custom pipeline step template you created back in step 1

          2. Populate the Converter Type and Processor Type fields with your custom types, for example:

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepConverter,Custom.DataExchange

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepProcessor,Custom.DataExchange






          share|improve this answer

























          • Thank you for sharing your approach with codes! Makes perfect sense for me.

            – Igor Evstratov
            Jun 8 at 15:55













          19












          19








          19







          You can add a custom pipeline step to perform the publishing. Below is an example of one that can publish either a specific item (e.g. the root item below which all your DEF items were imported) or an item in the pipeline context (e.g. each item as it's imported).



          As with all custom pipeline steps, you'll need to perform the following steps:



          1. Add a custom pipeline step template

          2. Add a plugin for settings

          3. Add a pipeline step converter

          4. Add a pipeline step processor

          5. Update the standard values of your template to reference your step converter and processor

          1. Create your template



          1. Create a new template called Publish Item Pipeline Step

            • I created mine at /sitecore/templates/Data Exchange/Providers/Sitecore/Pipeline Steps/Publish Item Pipeline Step


          2. Add /sitecore/templates/Data Exchange/Framework/Pipeline Steps/Base Pipeline Steps/Base Pipeline Step as a base template

          3. Add fields


            • EndpointFrom

              • Type: Droptree

              • Source: query:./ancestor-or-self::*[@@templateid='327A381B-59F8-4E88-B331-BEBC7BD87E4E']//descendant-or-self::*[@@templateid='CAADA2F1-1D71-452A-87BF-A3AE335CA169']



            • Item

              • Type: Droptree

              • Short Description: The exact item to publish. A value in this field will override the Item Location field.



            • ItemLocation

              • Type: Droplink

              • Source: DD61BBDB-CF41-40F6-9923-3031C7AB47C8

              • Short Description: Location within the pipeline's context of the item to publish



            • Publishing Targets

              • Type: Checklist

              • Source: /sitecore/system/Publishing targets



            • Publish Subitems

              • Type: Checkbox



          2. Add plugin



          using Sitecore.DataExchange;
          using Sitecore.Services.Core.Model;

          public class PublishItemSettings : IPlugin

          public ItemModel ItemModel get; set;
          public string[] TargetDatabaseNames get; set;
          public bool PublishSubitems get; set;



          3. Add pipeline step converter



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.DataExchange;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Converters.PipelineSteps;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Repositories;
          using Sitecore.Services.Core.Model;

          [SupportedIds("YOUR-TEMPLATE-ID")]
          public class PublishItemPipelineStepConverter : BasePipelineStepConverter

          public PublishItemPipelineStepConverter(IItemModelRepository repository) : base(repository)

          private void AddPublishItemSettings(ItemModel source, PipelineStep pipelineStep)


          private void AddDataLocationSettings(ItemModel source, PipelineStep pipelineStep)

          if (pipelineStep == null)

          throw new ArgumentNullException(nameof(pipelineStep));


          var settings = new DataLocationSettings

          DataLocation = GetGuidValue(source, "ItemLocation")
          ;
          pipelineStep.AddPlugin(settings);


          private void AddEndpointSettings(ItemModel source, PipelineStep pipelineStep)

          var settings = new EndpointSettings();
          var endpoint = ConvertReferenceToModel<Endpoint>(source, "EndpointFrom");
          if (endpoint != null)

          settings.EndpointFrom = endpoint;


          pipelineStep.AddPlugin(settings);


          protected override void AddPlugins(ItemModel source, PipelineStep pipelineStep)

          this.AddPublishItemSettings(source, pipelineStep);
          this.AddDataLocationSettings(source, pipelineStep);
          this.AddEndpointSettings(source, pipelineStep);




          4. Add pipeline step processor



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.Data;
          using Sitecore.Data.Items;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Contexts;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Providers.Sc.Extensions;
          using Sitecore.DataExchange.Providers.Sc.Processors.PipelineSteps;
          using Sitecore.Publishing;
          using Sitecore.Services.Core.Diagnostics;
          using Sitecore.Services.Core.Model;

          [RequiredPipelineStepPlugins(typeof(PublishItemSettings), typeof(DataLocationSettings), typeof(EndpointSettings))]
          public class PublishItemPipelineStepProcessor : UpdateSitecoreItemStepProcessor

          protected override void ProcessPipelineStep(PipelineStep pipelineStep, PipelineContext pipelineContext, ILogger logger)




          5. Update standard values



          1. In Sitecore, navigate to the standard values of your custom pipeline step template you created back in step 1

          2. Populate the Converter Type and Processor Type fields with your custom types, for example:

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepConverter,Custom.DataExchange

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepProcessor,Custom.DataExchange






          share|improve this answer















          You can add a custom pipeline step to perform the publishing. Below is an example of one that can publish either a specific item (e.g. the root item below which all your DEF items were imported) or an item in the pipeline context (e.g. each item as it's imported).



          As with all custom pipeline steps, you'll need to perform the following steps:



          1. Add a custom pipeline step template

          2. Add a plugin for settings

          3. Add a pipeline step converter

          4. Add a pipeline step processor

          5. Update the standard values of your template to reference your step converter and processor

          1. Create your template



          1. Create a new template called Publish Item Pipeline Step

            • I created mine at /sitecore/templates/Data Exchange/Providers/Sitecore/Pipeline Steps/Publish Item Pipeline Step


          2. Add /sitecore/templates/Data Exchange/Framework/Pipeline Steps/Base Pipeline Steps/Base Pipeline Step as a base template

          3. Add fields


            • EndpointFrom

              • Type: Droptree

              • Source: query:./ancestor-or-self::*[@@templateid='327A381B-59F8-4E88-B331-BEBC7BD87E4E']//descendant-or-self::*[@@templateid='CAADA2F1-1D71-452A-87BF-A3AE335CA169']



            • Item

              • Type: Droptree

              • Short Description: The exact item to publish. A value in this field will override the Item Location field.



            • ItemLocation

              • Type: Droplink

              • Source: DD61BBDB-CF41-40F6-9923-3031C7AB47C8

              • Short Description: Location within the pipeline's context of the item to publish



            • Publishing Targets

              • Type: Checklist

              • Source: /sitecore/system/Publishing targets



            • Publish Subitems

              • Type: Checkbox



          2. Add plugin



          using Sitecore.DataExchange;
          using Sitecore.Services.Core.Model;

          public class PublishItemSettings : IPlugin

          public ItemModel ItemModel get; set;
          public string[] TargetDatabaseNames get; set;
          public bool PublishSubitems get; set;



          3. Add pipeline step converter



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.DataExchange;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Converters.PipelineSteps;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Repositories;
          using Sitecore.Services.Core.Model;

          [SupportedIds("YOUR-TEMPLATE-ID")]
          public class PublishItemPipelineStepConverter : BasePipelineStepConverter

          public PublishItemPipelineStepConverter(IItemModelRepository repository) : base(repository)

          private void AddPublishItemSettings(ItemModel source, PipelineStep pipelineStep)


          private void AddDataLocationSettings(ItemModel source, PipelineStep pipelineStep)

          if (pipelineStep == null)

          throw new ArgumentNullException(nameof(pipelineStep));


          var settings = new DataLocationSettings

          DataLocation = GetGuidValue(source, "ItemLocation")
          ;
          pipelineStep.AddPlugin(settings);


          private void AddEndpointSettings(ItemModel source, PipelineStep pipelineStep)

          var settings = new EndpointSettings();
          var endpoint = ConvertReferenceToModel<Endpoint>(source, "EndpointFrom");
          if (endpoint != null)

          settings.EndpointFrom = endpoint;


          pipelineStep.AddPlugin(settings);


          protected override void AddPlugins(ItemModel source, PipelineStep pipelineStep)

          this.AddPublishItemSettings(source, pipelineStep);
          this.AddDataLocationSettings(source, pipelineStep);
          this.AddEndpointSettings(source, pipelineStep);




          4. Add pipeline step processor



          using System;
          using System.Collections.Generic;
          using System.Linq;
          using Sitecore.Data;
          using Sitecore.Data.Items;
          using Sitecore.DataExchange.Attributes;
          using Sitecore.DataExchange.Contexts;
          using Sitecore.DataExchange.Extensions;
          using Sitecore.DataExchange.Models;
          using Sitecore.DataExchange.Plugins;
          using Sitecore.DataExchange.Providers.Sc.Extensions;
          using Sitecore.DataExchange.Providers.Sc.Processors.PipelineSteps;
          using Sitecore.Publishing;
          using Sitecore.Services.Core.Diagnostics;
          using Sitecore.Services.Core.Model;

          [RequiredPipelineStepPlugins(typeof(PublishItemSettings), typeof(DataLocationSettings), typeof(EndpointSettings))]
          public class PublishItemPipelineStepProcessor : UpdateSitecoreItemStepProcessor

          protected override void ProcessPipelineStep(PipelineStep pipelineStep, PipelineContext pipelineContext, ILogger logger)




          5. Update standard values



          1. In Sitecore, navigate to the standard values of your custom pipeline step template you created back in step 1

          2. Populate the Converter Type and Processor Type fields with your custom types, for example:

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepConverter,Custom.DataExchange

            • Custom.DataExchange.Providers.Sc.PipelineSteps.PublishItemPipelineStepProcessor,Custom.DataExchange







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Jun 7 at 13:31

























          answered Jun 7 at 13:14









          Dan SinclairDan Sinclair

          2,9732 gold badges8 silver badges30 bronze badges




          2,9732 gold badges8 silver badges30 bronze badges












          • Thank you for sharing your approach with codes! Makes perfect sense for me.

            – Igor Evstratov
            Jun 8 at 15:55

















          • Thank you for sharing your approach with codes! Makes perfect sense for me.

            – Igor Evstratov
            Jun 8 at 15:55
















          Thank you for sharing your approach with codes! Makes perfect sense for me.

          – Igor Evstratov
          Jun 8 at 15:55





          Thank you for sharing your approach with codes! Makes perfect sense for me.

          – Igor Evstratov
          Jun 8 at 15:55

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Sitecore Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsitecore.stackexchange.com%2fquestions%2f19237%2fhow-to-publish-items-after-pipeline-is-finished%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          9nfi7b5X6 BsdtM0f,5Tp4xt AilnSCbmml2
          1sF7 e8hjQ5j

          Popular posts from this blog

          RemoteApp sporadic failureWindows 2008 RemoteAPP client disconnects within a matter of minutesWhat is the minimum version of RDP supported by Server 2012 RDS?How to configure a Remoteapp server to increase stabilityMicrosoft RemoteApp Active SessionRDWeb TS connection broken for some users post RemoteApp certificate changeRemote Desktop Licensing, RemoteAPPRDS 2012 R2 some users are not able to logon after changed date and time on Connection BrokersWhat happens during Remote Desktop logon, and is there any logging?After installing RDS on WinServer 2016 I still can only connect with two users?RD Connection via RDGW to Session host is not connecting

          Vilaño, A Laracha Índice Patrimonio | Lugares e parroquias | Véxase tamén | Menú de navegación43°14′52″N 8°36′03″O / 43.24775, -8.60070

          Cegueira Índice Epidemioloxía | Deficiencia visual | Tipos de cegueira | Principais causas de cegueira | Tratamento | Técnicas de adaptación e axudas | Vida dos cegos | Primeiros auxilios | Crenzas respecto das persoas cegas | Crenzas das persoas cegas | O neno deficiente visual | Aspectos psicolóxicos da cegueira | Notas | Véxase tamén | Menú de navegación54.054.154.436928256blindnessDicionario da Real Academia GalegaPortal das Palabras"International Standards: Visual Standards — Aspects and Ranges of Vision Loss with Emphasis on Population Surveys.""Visual impairment and blindness""Presentan un plan para previr a cegueira"o orixinalACCDV Associació Catalana de Cecs i Disminuïts Visuals - PMFTrachoma"Effect of gene therapy on visual function in Leber's congenital amaurosis"1844137110.1056/NEJMoa0802268Cans guía - os mellores amigos dos cegosArquivadoEscola de cans guía para cegos en Mortágua, PortugalArquivado"Tecnología para ciegos y deficientes visuales. Recopilación de recursos gratuitos en la Red""Colorino""‘COL.diesis’, escuchar los sonidos del color""COL.diesis: Transforming Colour into Melody and Implementing the Result in a Colour Sensor Device"o orixinal"Sistema de desarrollo de sinestesia color-sonido para invidentes utilizando un protocolo de audio""Enseñanza táctil - geometría y color. Juegos didácticos para niños ciegos y videntes""Sistema Constanz"L'ocupació laboral dels cecs a l'Estat espanyol està pràcticament equiparada a la de les persones amb visió, entrevista amb Pedro ZuritaONCE (Organización Nacional de Cegos de España)Prevención da cegueiraDescrición de deficiencias visuais (Disc@pnet)Braillín, un boneco atractivo para calquera neno, con ou sen discapacidade, que permite familiarizarse co sistema de escritura e lectura brailleAxudas Técnicas36838ID00897494007150-90057129528256DOID:1432HP:0000618D001766C10.597.751.941.162C97109C0155020