10 Replies Latest reply on Mar 4, 2016 3:02 AM by shuda

    How to Connect Recruitment portal feed to Jive?

    shuda

      Hello all,

       

      This is my first post here

       

      We have a recruitment portal called 'success factors'  where the HR team posts new jobs.  Now they want to integrate the job feed to their page on our Jive platform.

       

      The success factor team said, they can provide either json or xml.   Can you please advise how we can achieve this.

       

      Many thanks in advanced,

       

      Sharif

        • Re: How to Connect Recruitment portal feed to Jive?

          It all depends on how you want it to manifest in the UI.  You could look at doing a Creating Custom View Tiles if it is just an experience view ... or you could look at doing a Simple Stream integration if SuccessFactors is feeding activity into Jive, such as: Developing Your Own Simple Stream Integrations or Dev Tool: Simple Stream App with Bi-Directional Communication (3 of 3).  Those are your easiest options ... but there are plenty more to select from ... but would need you to share more details about how you want to manifest the experience before we could start filtering out options.

           

          hope that helps

          1 person found this helpful
            • Re: How to Connect Recruitment portal feed to Jive?
              shuda

              Hi Riyan,

               

              Thanks for your reply.  We just want to display the job feed in the recruitment place/group of our jive platform. I think it will be similar to facebook/twitter or any kind of rss feed.  Also in the admin panel for our platform, I don;t see the 'add-on' option as mentioned in one of the links above.  so, can you please advise what will be the easiest option to achieve this.

              Thanks

               

              1.jpg

                • Re: How to Connect Recruitment portal feed to Jive?

                  Which version of Jive are you using?  Based on the admin navbar, it appears you are using Jive 7 or less ... which means that your options will be limited to Apps most likely.

                   

                  Such as the Place Tab View most likely as you've seen in App Action Contribution Reference but again...this is only available for Jive 7 or higher....so version matters. =)

                    • Re: How to Connect Recruitment portal feed to Jive?
                      shuda

                      Hi Ryan,

                       

                      It seems we are using version 6.0   Even though we are planing to upgrade it this year.

                       

                      In the mean time what will be the best option to display the recruitment portal? Just to mention, we have 'HTML widget' in our platform.

                       

                      Thanks,

                       

                      Sharif

                        • Re: How to Connect Recruitment portal feed to Jive?

                          If you are in a time crunch, HTML Widget will probably be your safest, fastest and most long-term option. 

                           

                          The Apps Market is about to do go into an EOL state...which means any apps you write on it will be defunct at some point in the not so distant future most likely.  If you wanted to gamble though, you could use the Canvas View (App Action Contribution Reference) and make the experience available from the Apps Menu in the navbar.  You could port this app to an add-on for Jive 7 and above to retain the same experience ... but since I dont have a definitive date when the Apps Market will be making its exit ... I'm cautious to recommend option.

                           

                          Hope that helps.

                            • Re: How to Connect Recruitment portal feed to Jive?
                              shuda

                              Hi Ryan,

                               

                              Thanks for suggestion. But In HTML widget, what will be the best way to display the external portal? i tried couple of ways such as iframe and it doesn't show up.

                               

                              Many Thanks,

                               

                              Sharif

                                • Re: How to Connect Recruitment portal feed to Jive?

                                  IFRAMEs are stripped unless you are a full access admin for security purposes.  There are some pretty amazing things you can do in an HTML widget, such as:

                                  UX Widgets  and if you can create your experience via  JS call to a CORS compatible resource...then that will probably work best.

                                   

                                  If a Full Access admin comes in and create a widget with an IFRAME and someone that is not an admin comes in and tweaks it...it gets stripped.  Its definitely a volatile solution; however, given the version of Jive you are ... those are really your only options. =\

                                    • Re: How to Connect Recruitment portal feed to Jive?
                                      shuda

                                      Hi Ryan,

                                       

                                      youtube video works just fine on the html widget. But when I try to display an external website, it just comes up as blank and nothing displays.

                                       

                                      Any idea what should be the code in side the html widget to display an external website?

                                       

                                      Many Thanks,

                                       

                                      Sharif

                                        • Re: How to Connect Recruitment portal feed to Jive?

                                          It is possible that the remote site doesn't allow the site to be IFRAMEable? X-Frame-Options header in the response from the remote server.  If it states DENY or SAMEORIGIN, that service isn't going to work in an IFRAME. Other than that...if the IFRAME remains, but is just blank ... then that means that it probably isn't Jive causing the issue.  Jive would remove the IFRAME entirely in most cases.

                                            • Re: How to Connect Recruitment portal feed to Jive?
                                              shuda

                                              Hi Ryan,

                                               

                                              Thanks for your valuable replies.

                                               

                                              We have now got the test platform of cloud jive version N. Because we are upgrading our platform in couple of months time.  I can see Tiles there.

                                               

                                              I used the HTML tiles and entered the following code given by success facto team but  it doesn't display anything. Just blank:

                                               

                                               

                                              <html>

                                                  <head>

                                              <title>Springer</title>

                                                      <script src="http://code.jquery.com/jquery-1.4.4.min.js"></script>

                                                      <meta http-equiv="content-type" content="text/html; charset=utf-8">

                                                      <meta charset="utf-8">

                                                  </head>

                                                  <body>

                                                      <div id='page'>

                                                          <div id='jobRequisitions'></div>

                                                      </div>

                                                      <script type="text/javascript">

                                                          var targetElementId = 'jobRequisitions';

                                                          var noJobRequisitions = ("<h3 class='bodytext'>There are no job requisitions available at the moment</h3>");

                                                          var config = {

                                              "companyId": "CC1C2DE9-EBC2-5C65-A253-83097B488441", //Server

                                              //Language of job req's

                                              //"locale": "de_DE",

                                              //"locale": "nl_NL",

                                              //"locale": "en_US",

                                              "locale": "en_US;en_GB",

                                              //de_DE;nl_NL;

                                              "board":"internal",

                                              //"board":"both",

                                              //"board":"external",

                                                              "sort": [{"filter1.value": 1}, {"extTitle.value": 1}]

                                                          };

                                               

                                              if (typeof jQuery === 'undefined') {

                                              var errorMessage = 'jQuery wurde nicht gefunden; Bitte jQuery (1.4.4+) einbinden! www.jquery.com';

                                              document.write(errorMessage);

                                              throw new Error(errorMessage);

                                                          }

                                               

                                                          var hasOwnProperty = Object.prototype.hasOwnProperty;

                                               

                                              function isEmpty(obj) {

                                               

                                              // null and undefined are "empty"

                                              if (obj == null)

                                              return true;

                                               

                                              // Assume if it has a length property with a non-zero value

                                              // that that property is correct.

                                              if (obj.length > 0)

                                              return false;

                                              if (obj.length === 0)

                                              return true;

                                               

                                              // Otherwise, does it have any properties of its own?

                                              // Note that this doesn't handle

                                              // toString and valueOf enumeration bugs in IE < 9

                                              for (var key in obj) {

                                              if (hasOwnProperty.call(obj, key))

                                              return false;

                                              }

                                               

                                              return true;

                                                          }

                                               

                                              JobsReceived = function(data) {

                                              var dataArray = data.sfobject;

                                              if (dataArray.length === 0) {

                                              $(noJobRequisitions).appendTo($('#' + targetElementId));

                                              } else {

                                              dataArray.sort(SortByGroupKey);

                                              }

                                               

                                              for (var i = 0; i < dataArray.length; i++) {

                                              //Grouping

                                              var groupkey = GetKey(dataArray[i]);

                                              var group = $('[groupKey="' + groupkey + '"]');

                                              if (group.length === 0) {

                                              group = $("<div class='bodytext' id='" + id + "' groupKey='" + groupkey + "'><h3>" + groupkey + "</h3></div>");

                                              group.appendTo($('#' + targetElementId));

                                              }

                                               

                                              //Jobrequistion Link

                                              var department = dataArray[i].filter1.value;

                                                                 var linkText = '' + department + ': ' + dataArray[i].extTitle.value;

                                              var linkUrlIntern = dataArray[i].deeplinkInternalJobUrl.value;

                                              var id = dataArray[i].id.value;

                                               

                                              var linkelementInternal = $("<p><a href='" + linkUrlIntern + "' target='_blank'>" +id + " - Intern - " + linkText + "</a></p>");

                                              linkelementInternal.appendTo(group);

                                              }

                                                          };

                                               

                                              SortByGroupKey = function(a, b) {

                                              var aGroupKey = TranslateUmlaute(GetKey(a).toLowerCase());

                                              var bGroupKey = TranslateUmlaute(GetKey(b).toLowerCase());

                                              return ((aGroupKey < bGroupKey) ? -1 : ((aGroupKey > bGroupKey) ? 1 : 0));

                                                          };

                                               

                                              TranslateUmlaute = function(s) {

                                              if (!TranslateUmlaute.translate_re)

                                              TranslateUmlaute.translate_re = /[öäüÖÄÜ]/g;

                                              var translate = {

                                              "ä": "a", "ö": "o", "ü": "u",

                                              "Ä": "A", "Ö": "O", "Ü": "U"   // probably more to come

                                              };

                                              return (s.replace(TranslateUmlaute.translate_re, function(match) {

                                              return translate[match];

                                              }));

                                                          };

                                               

                                              GetKey = function(data) {

                                              return isEmpty(data.country.value) ? "" : data.country.value;

                                                          };

                                               

                                              function crossDomainAjax(url, successCallback) {

                                              // IE8 & 9 only Cross domain JSON GET request

                                              if ('XDomainRequest' in window && window.XDomainRequest !== null) {

                                              var xdr = new XDomainRequest(); // Use Microsoft XDR

                                              xdr.open('get', url);

                                              xdr.onload = function() {

                                              var dom = new ActiveXObject('Microsoft.XMLDOM'),

                                              JSON = $.parseJSON(xdr.responseText);

                                               

                                              dom.async = false;

                                               

                                              if (JSON == null || typeof (JSON) == 'undefined') {

                                              JSON = $.parseJSON(data.firstChild.textContent);

                                              }

                                               

                                              successCallback(JSON); // internal function

                                              };

                                               

                                              xdr.onerror = function() {

                                              _result = false;

                                              };

                                               

                                                                  xdr.onprogress = function() {};

                                               

                                              xdr.send();

                                              }

                                               

                                              // IE7 and lower can't do cross domain

                                              else if (navigator.userAgent.indexOf('MSIE') != -1 &&

                                              parseInt(navigator.userAgent.match(/MSIE ([\d.]+)/)[1], 10) < 8) {

                                              return false;

                                              }

                                               

                                              // Do normal jQuery AJAX for everything else         

                                                              else {

                                              $.ajax({

                                              url: url,

                                              cache: false,

                                              dataType: 'json',

                                              type: 'GET',

                                              async: false, // must be set to false

                                              success: function(data, success) {

                                              successCallback(data);

                                              }

                                              });

                                              }

                                                          }

                                               

                                              $(document).ready(function() {

                                              crossDomainAjax('http://services.abayoo.de/queryJobs.php?'+$.param(config), JobsReceived);

                                                          });

                                                      </script>

                                                  </body>

                                              </html>