This is a simple task that should be set up on a schedule to monitor a network location for XML files. Once found, it will look for an expected format and read them, before creating the job.

It will try to use a Job Type attribute to match a job template but if not found, will use a blank job.

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using Contracts;
 using Contracts.Data;
 using Contracts.Databases;
 using Contracts.Responses;
 namespace ScriptExample
 {
     /// <summary>
     /// Simple task to monitor a network location and look for xml files that define job details
     /// </summary>
     public class CreateJobTask : SynergyServerScripting.Task
     {
         private const string INPUT_NETWORK_LOCATION = "Network Location for Config Files";
         /// <summary>
         /// Constructor - always pass in a GUID
         /// </summary>
         public CreateJobTask() : base(Guid.Parse("{2AE7B699-17C8-48CC-B3D3-0E9957DD9AB1}"))
         {
         }
         /// <summary>
         /// Get a description
         /// </summary>
         /// <returns></returns>
         public override string GetDescription()
         {
             return "Creates a Job based on information written to XML files at a network location";
         }
         /// <summary>
         /// Lock any entities - not relevant
         /// </summary>
         /// <param name="locks"></param>
         /// <param name="db"></param>
         public override void GetEntitiesToLock(IEntityLocks locks, IDatabase db)
         {
             return;
         }
         /// <summary>
         /// Get the name
         /// </summary>
         /// <returns></returns>
         public override string GetName()
         {
             return "Job Builder";
         }
         /// <summary>
         /// Run the task
         /// </summary>
         /// <param name="user_id">the id of the user that is running the task, set at schedule time</param>
         /// <param name="inputs">the input values</param>
         /// <param name="db">a database connection</param>
         /// <returns></returns>
         protected override OperationResponse PerformTask(EntityID user_id, Dictionary<string, ScriptInput> inputs, IDatabase db)
         {
             // check for inputs
             if (!inputs.ContainsKey(INPUT_NETWORK_LOCATION))
                 return OperationResponse.Error(-1, "Network location not set!");
             var input = inputs[INPUT_NETWORK_LOCATION] as PrimitiveScriptInput;
             if (input == null)
                 return OperationResponse.Error(-1, "Network location not set!");
             string network_location = input.type_value;
             if (string.IsNullOrWhiteSpace(network_location))
                 return OperationResponse.Error(-1, "Network location not set!");
             if (!System.IO.Directory.Exists(network_location))
                 return OperationResponse.Error(-1, "Network location set but is not valid!");
             // get our project number attribute and job type attribute
             var job_number_attrib = SynergyServerScripting.Entities.Attribute.FindAttributeByName("JobNumber", db).FirstOrDefault();
             if (job_number_attrib == null)
                 return OperationResponse.Error(-1, "Unable to find expected ProjectNumber attribute");
             var job_type_attrib = SynergyServerScripting.Entities.Attribute.FindAttributeByName("JobType", db).FirstOrDefault();
             if (job_type_attrib == null)
                 return OperationResponse.Error(-1, "Unable to find expected ProjectNumber attribute");
 
             var files = System.IO.Directory.GetFiles(network_location, "*.xml");
             foreach (var f in files)
             {
                 // read from the XML file
                 var xml = System.Xml.Linq.XDocument.Load(f);
                 var job_info = xml.Descendants("Job").Select(x => new
                 {
                     Name = x.Attribute("JobName").Value.ToString(),
                     JobNumber = x.Attribute("JobNumber").Value.ToString(),
                     Description = x.Attribute("Description").Value.ToString(),
                     JobType = x.Attribute("JobType").Value.ToString(),
                 }).FirstOrDefault();
                 if (job_info == null) continue;
                 // does it already_exist?
                 var found_id = SynergyServerScripting.Entities.Project.GetProjectID(job_info.Name, null, db);
                 if (found_id != null) continue;
 
                 // find our template, based on the job type
                 AttributeValueCollection template_attribs = new AttributeValueCollection();
                 template_attribs[job_type_attrib.id] = new AttributeValue(job_info.JobType);
                 var template = SynergyServerScripting.Entities.Project.MatchTemplate(template_attribs, user_id, db);
 
                 EntityID created_id = null;
                 // found a template, so use that
                 if (template != null)
                 {
                     created_id = SynergyServerScripting.Entities.Project.ReplicateProject(job_info.Name, job_info.Description, 1, template.project_id, null, user_id, db, null);
                 }
                 else
                 {
                     // didn't find a template - use an empty job
                     created_id = SynergyServerScripting.Entities.Project.CreateProject(SynergyServerScripting.Entities.Server.GetServerID(), job_info.Name, job_info.Description, null, null, user_id, db);
                 }
                 // attach our job number attribute 
                 SynergyServerScripting.Entities.Project.AttachAttributeToProject(created_id, job_number_attrib.id, false, false, db);
                 var copied = job_number_attrib.CopyWithNewEmptyValue();
                 copied.value = new AttributeValue(job_info.JobNumber);
                 SynergyServerScripting.Entities.Project.SetProjectAttributeValue(created_id, copied, db);
                 // attach our job type attribute
                 SynergyServerScripting.Entities.Project.AttachAttributeToProject(created_id, job_type_attrib.id, false, false, db);
                 copied = job_number_attrib.CopyWithNewEmptyValue();
                 copied.value = new AttributeValue(job_info.JobType);
                 SynergyServerScripting.Entities.Project.SetProjectAttributeValue(created_id, copied, db);
             }
             return new OperationResponse();
         }
         /// <summary>
         /// Get all the inputs we need
         /// </summary>
         /// <returns></returns>
         public override IEnumerable<ScriptInput> GetConfigurableInputs()
         {
             return new List<ScriptInput>()
             {
                 new PrimitiveScriptInput(INPUT_NETWORK_LOCATION, "The location where XML files will be stored", false, PrimitiveScriptInputType.String)
             };
         }
     }
 }
 					
This language is not supported or no code example is available.